git commit

git branch 创建分支

git checkout 切换分支

git checkout -b 创建并切换到分支

git merge 合并分支:产生一个新提交

在master下合并bugFix, 使用git merge bugFix,此时master向上指向了两条提交记录,在使用git merge bugFix,此时bugFix和master处在了同一位置。

git rebase 合并分支:取出所有提交记录,在另外一个地方放下去

在bugFix分支,git rebase master,然后更新,切回master,git rebase bugFix,master和bugFix就处在了同一位置。

分离HEAD

HEAD:当前记录检出的符号引用

直接使用git checkout (提交记录的哈希),可以分离HEAD

git checkout HEAD^ 向上移动1个提交记录

git checkoutHEAD~3 向上移动3个提交记录

撤销变更

git reset 使用git reset HEAD~1,回退到上个提交(修改的内容加入了暂存区)

git revert 使用git revert HEAD,追加了一个新提交,更改就是撤销上个提交,此时新提交和上上个提交相同

自由移动提交

git cherry-pick (提交记录哈希,可多个),可以将任意提交记录添加到本分支

配合git reflog可以恢复已经reset的提交。

git rebase -i HEAD~4 交互式移动。

git打标签

为commit做一个永久标记:

git tag [tagName] [commit] 为某个记录打标签,不写commit为当前commit

git push origin [tagName] 标签推送远程

git show [tagName] 查看某个标签

git tag -l 查看所有标签

git tag -d [tagName] 删除标签

git describe 描述某个记录的标签

多分支rebase

git rebase [branch1] [branch2] 把branch1合并到branch2上来

git checkout master^ 回到master上一条记录

git checkout master^2 回到master另外上一条(如果有)

支持链式操作:

git checkout HEAD;git checkout HEAD^2;git checkout HEAD2

=== git checkout HEAD^22

git brance [branch] [commit] 在commit位置新建分支

git branch -f [commit1] [commit2] 移动commit1到commit2

远程相关

git clone

在本地创建一个远程的拷贝

git fetch 从远程获取数据,不会改变本地的状态,不会更新master分支,也不会修改磁盘上的文件。

git pull == git fetch + git merge

git pull –rebase == git fetch + git rebase

任意分支跟踪origin/master

git checkout -b [branch] origin/master

git branch -u origin/master [branch]

git push参数

git push origin master

获取提交推送到远程master

git push origin master:[branch]

推送本地分支branch到远程master

git fetch参数

git fetch origin foo

获取远程foo分支,并下载

git fetch orgin source:descprtion

下载远程source分支到本地descrption,与pugh相反

不指定source

git push orgin :side:push空source删除远程side分支

git fetch origin :bugFix:fetch空source会在本地创建一个新分支

git pull

git pull origin master:foo == git fetch origin master:foo + git merge foo

学习自:

Learn Git Branching