常用的git命令整理
基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| git init --bare /path/to/repos.git
git config --global user.email "xxx" git config --global user.name "xxx"
git clone user@host:/path/to/repos.git
git checkout develop
git checkout -b dev2 origin/dev2
git add filename git add -A git add . git commit
|
与远程仓库的交互
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git remote -v git remote rm origin git remote add origin git@127.0.0.1:/data0/gitRepos/anxin.git
git push origin dev:dev git push origin master:master
git pull --rebase origin dev:dev git pull --rebase
|
rebase(变基)
git pull
相当于git fetch
+ git merge
git pull --rebase
相当于git getch
+ git rebase
使用rebase可以自由控制合并的进度。
rebase的过程如果遇到冲突,会自动停止。通过编辑代码解决冲突的文件。修改完成后通过git add
添加到stage
然后执行continue命令继续rebase
如果实在无法解决冲突,使用abort回退到rebase开始前的状态
为git pull默认追加rebase项
1 2
| git config branch.autosetuprebase always #仅修改本仓库设置 git config --global branch.autosetuprebase always #修改全局设置
|
为仓库指定上游仓库
git push
的时候可带-u
参数。如果当前分支与多个主机存在追踪关系,那么这个时候-u
选项会指定一个默认主机
1 2 3
| git push -u origin dev:dev
git branch --set-upstream-to=origin/dev dev
|
-u
或者 --set-upstream-to
, 每个分支仅需要执行一次。
这样后面就可以不加任何参数使用git push
和git pull
撤销和回滚
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| git checkout -- filename.php
git reset filename.php
git reset filename.php git checkout filename.php
git log filename.php git checkout <commitID> -- filename.php
git reset HEAD~1 git reset <commitID> 撤销到某次提交之后的提交。但本地文件仍保持不变 git reset --hard HEAD~1
git revert <commitID>
|
修改上次提交
1 2 3 4 5 6 7 8 9 10
| #修改最后一次提交的注释,如果push则无法修改 git commit --amend
#修改最后一次提交者:修改user和email后amend git config --global user.name='ziliang' git commit --amend --reset-author
#修改更早的提交 git rebase -i HEAD~3 #当前版本的导数第三次 #再使用git commit --amend
|
日志
1 2 3 4 5 6 7 8
| #查看某条提交更新内容 git show <commitID>
#查看最近2次更新内容 git log -p -2
#查看某文件更新内容 git log -p filename.php
|
设置别名日志美化
1 2 3 4 5 6 7 8 9
| #每次展示10条 git config --global alias.ll "log -10 --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git ll
#每次展示所有日志 git config --global alias.la "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git la
|