常用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

参考资料 

 

 

 

posted @ 2017-04-17 11:21  LeeGof  阅读(671)  评论(0)    收藏  举报