常用Git指令
1.目录和文件
显示当前目录路径:
pwd
创建/打开目录:
//创建目录 mkdir IOS //打开目录 open IOS
移动文件:
//File为要移动的文件 TargetPath为要移动到的目录路径 mv File TargetPath
2.Git库
git配置:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
进入Git远程服务器
ssh git@git.gof.net
初始化远程git仓库:
sudo git init --bare sample.git
git仓库赋权:
sudo chown -R git:git sample.git
把目录变成git仓库:
git init
添加文件到仓库:
git add readme.txt
把修改提交到仓库。-m后面输入的是提交的说明,可以输入任意内容:
git commit -m "修改Key名称"
查看仓库当前的状态:
git status
查看文件修改的内容(一般用 git status指令查看到修改的文件,然后用git diff指令查看文件具体的修改内容):
git diff UIViewController+GofHookForGA.m
显示从最近到最远的提交日志:
git log
同上,不同的是仅显示日志摘要信息:
git log --pretty=oneline
回退到上一个版本:
//HEAD表示当前版本;上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100 git reset --hard HEAD^
回退到指定commit id的版本:
//那串数字是commit id。 //版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了 git reset --hard 3628164
记录每一次命令:
git reflog
把readme.txt文件在工作区的修改全部撤销:
git checkout -- readme.txt
把暂存区的修改回退到工作区:
git reset HEAD readme.txt
直接删除文件:
rm test.txt
从版本库中删除文件,需要git commit:
git rm test.txt
本地库和远程库相关联,远程库名称为origin:
git remote add origin https://github.com/GofLee001/swiftdemo.git
本地分支和远程分支关联:
git branch --set-upstream-to=origin/远程分支名
把本地库master的所有内容推送到远程库:
//加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 git push -u origin master
把本地master分支的最新修改推送至GitHub:
git push origin master
克隆仓库到本地:
//1.要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。 //2.Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。 git clone git@github.com:GofLee001/swiftdemo.git
创建dev分支,然后切换到dev分支:
git checkout -b dev
创建dev分支:
git branch dev
切换到dev分支:
git checkout dev
列出所有分支,当前分支前面会标一个*号:
git branch
合并指定分支dev到当前分支:
git merge dev
删除dev分支:
git branch -d dev
查看分支的合并情况:
git log --graph
把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
查看保存的工作现场:
git stash list
恢复工作现场并删除stash:
git stash pop //上面指令等效于下面这两条指令 git stash apply //恢复工作现场 git stash drop //删除stash
强行删除没有合并过的分支dev:
git branch -D dev
查看远程库的信息:
git remote
查看远程库的详细信息:
git remote -v
推送自己的修改到远程:
git push origin branch-name
在本地创建和远程分支对应的分支:
git checkout -b branch-name origin/branch-name
建立本地分支和远程分支的关联:
git branch --set-upstream branch-name origin/branch-name
从远程拉取分支:
git pull
tag相关操作:
//查看所有标签 git tag //打一个新标签 git tag v1.0 //给指定的commit打标签 git tag v0.9 6224937 //创建带有说明的标签,用-a指定标签名,-m指定说明文字 git tag -a v0.1 -m "version 0.1 released" 3628164 //推送tag到远程 git push origin v1.0 //推送所有本地标签到远程 git push origin --tags //删除本地标签 git tag -d v0.1 //删除远程的标签 git push origin :refs/tags/v0.1
让Git显示颜色:
git config --global color.ui true
更新 submodule:
git submodule update --remote
设置别名,这里status的别名是st:
git config --global alias.st status
删除submodule:
git submodule deinit 私有库名称 git rm 私有库名称 git rm --cached 私有库名称 rm -rf .git/modules/私有库名称
3.操作Podfile文件
创建Podfile文件:
touch Podfile
用Xcode打开Podfile文件:
open -a Xcode Podfile
4.提交podspec文件:
//1.提交到Github pod lib lint GofShakeAndEmail.podspec //pod验证 有时候需要加一下参数:--use-libraries --allow-warnings
pod trunk push GofShakeAndEmail.podspec //上传podspec文件到trunk服务器
//2.提交到私有服务器
pod repo push GofSpecs GofNetComponent.podspec
5.其他指令
5.1修改hosts文件
sudo vim /etc/hosts
删除指令:
x 删除光标下的字符 ("dl" 的缩写) X 删除光标前的字符 ("dh" 的缩写) D 从当前位置删除到行尾 ("d$" 的缩写) dw 从当前位置删除到下一个单词开头 db 从当前位置删除到前一个单词的开头 diw 删除光标上的单词 (不包括空白字符) daw 删除光标上的单词 (包括空白字符) dG 删除到文件末 dgg 删除到文件首 "dl" 删除字符 (缩写: "x") |dl| "diw" 删除内含单词 *diw* "daw" 删除一个单词 *daw* "diW" 删除内含字串 (见 |WORD|) *diW* "daW" 删除一个字串 (见 |WORD|) *daW* "dd" 删除一行 |dd| "dis" 删除内含句子 *dis* "das" 删除一个句子 *das* "dib" 删除内含 '(' ')' 块 *dib* "dab" 删除一个 '(' ')' 块 *dab* "dip" 删除内含段落 *dip* "dap" 删除一个段落 *dap* "diB" 删除内含 '{ ' ' }' 大块 *diB* "daB" 删除一个 '{ ' ' }' 大块 *daB
5.2修改软件来源
sudo spctl --master-disable
5.3模拟器安装app
安装指令(参考):
xcrun simctl install booted App路径
如遇类似下面的错误提示:
No devices are booted。
执行指令(参考):
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
安装包需要用Xcode直接运行生成,不能用Archive方式打包(这种的安装到模拟器之后会直接崩溃)。
5.4清除CocoaPods缓存
pod cache clean WCDB --all rm -rf ~/Library/Caches/CocoaPods pod repo update pod intall
5.5卸载Mysql
sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* vim /etc/hostconfig (删除MYSQLCOM=-YES-这行) rm -rf ~/Library/PreferencePanes/My* sudo rm -rf /Library/Receipts/mysql* sudo rm -rf /Library/Receipts/MySQL* sudo rm -rf /var/db/receipts/com.mysql.*
Mysql指令报错:

解决方案:
//关闭mysql: mysqld stop //执行如下指令 mysqld_safe --skip-grant-tables //启动mysql: mysqld start mysql -u root mysql> use mysql mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root'; mysql> flush privileges; mysql>\q
5.6文件赋权
chmod -R 777 [FolderName]
有可能遇到如下错误:
Operation not permitted
这是因为El Capitan(10.11) 加入了Rootless机制,很多系统目录不再能够随心所欲的读写了,即使设置 root 权限也不行。以下路径无法写和执行:
/System /bin /sbin /usr (except /usr/local)
加入这个机制主要是为了防止恶意程序的入侵。
解决方案:关闭Rootless机制。
重启按住 Command+R,进入恢复模式,打开Terminal:
csrutil disable
操作完之后,开启Rootless机制。
重启按住 Command+R,进入恢复模式,打开Terminal:
csrutil enable
5.7Mac的bash_profile默认不生效
在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效。需要重新执行 :
source ~/.bash_profile
如果使用的是zsh终端,可以 在~/.zshrc文件最后,添加如下代码即可:
source ~/.bash_profile
如果是Mac默认的zshell,可以在~/.zprofile中添加如下代码:
if [ -f ~/.bash_profile ]; then source ~/.bash_profile fi
5.8SSH仓库公钥生成
git config --global user.name "ligaofeng" git config --global user.email "ligaofeng0927@163.com" ssh-keygen -t rsa -C "ligaofeng0927@163.com"
5.9杀死指定进程
//查看指定端口的进程(3000是端口号) sudo lsof -i:3000 //杀死指定进程(7166是指定进程) sudo kill -9 7166
5.10生成Git动画
gource \ -1280x720 \ --seconds-per-day 0.05 \ --max-file-lag 0.1 \ --key \ --date-format "%Y-%m-%d" \ --title "iOS dev" \ --font-size 28 \ --file-idle-time 0 \ --hide filenames,bloom,dirnames \ -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -b:v 8000k -bufsize 8000k -maxrate 10000k -threads 0 -bf 0 gource.mp4
需要安装 FFMpeg 和 gource。
5.11代码统计
代码统计: git_stats generate -o stats --language zh_tw //提交人数统计 git log --since=2019-01-01 --until=2019-12-31 --pretty='%aN' | sort -u | wc -l //提交数统计 git log --since=2019-01-01 --until=2019-12-31 --oneline | wc -l //仓库提交排名前5 git log --since=2019-01-01 --until=2019-12-31 --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5 //统计每个人的增删行数 git log --since=2019-01-01 --until=2019-12-31 --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done //添加或修改的代码行数 git log --since=2019-01-01 --until=2019-12-31 --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/' //代码总行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" -name "*.swift" |xargs grep -v "^$"|wc -l
5.11查看 IPA中的证书
security cms -D -i embedded.mobileprovision
电脑上所有的描述文件路径:
/Users/ligaofeng/Library/MobileDevice/Provisioning\ Profiles
6.常见问题
问题一:Please move or remove them before you merge.详细信息如下所示:
error: The following untracked working tree files would be overwritten by merge: .DS_Store Please move or remove them before you merge.
解决方案:
git clean -d -fx ".DS_Store"
问题二: Macbook Pro 预设打开上盖或链接电源时,电脑自动开机而且开机没有启动声,怎么还原?
- 取消自动开机:
sudo nvram AutoBoot=%00
- 重新启用自动开机:
sudo nvram AutoBoot=%03
- 开启开机音效:
sudo nvram BootAudio=%01
- 取消开机音效:
sudo nvram BootAudio=%00
问题三:钥匙串中打包证书,配置 codesign、security 的路径是什么?
-
/usr/bin
问题四:苹果数据线,连接总是断断续续的,怎么办?
sudo killall -STOP -c usbd
参考资料

浙公网安备 33010602011771号