查看本地分支:
git branch
查看远程分支:
git branch -r
查看所有分支(包括远程分支):
git branch -a
查看每个分支的最后一次提交:
git branch -v
创建一个test分支:
git branch <test>
切换分支:
git checkout <test>
创建并切换到新分支:
git checkout -b <test>
将branch分支合并到当前分支
git merge <branch>
git merge --no-ff <branch>(no fast forward的意思)
删除分支:
git branch -d <test>
强制删除
git branch -D <test>
分支重命名:
git branch -m <old_name> <new_name>
查看哪些分支已经合并到当前分支:
git branch --merged
查看所有包含未合并工作的分支:
git branch --no-merged
远程分支
查看分支正在跟踪哪个远程分支,本地分支是否是领先、落后或是都有:
git branch -vv
git fetch --all;
先更新再查看
git branch -vv
推送到远程仓库(可用来增加远程分支):
第一次推送加上 -u 参数,默认推送到与本地分支同名的远程分支上,若远程分支和本地分支同名,则冒号及后面的内容可省略
git push -u <远程仓库> <本地分支>:<远程分支>
取回远程仓库的全部更新:
将数据拉取到本地仓库但不会自动合并或修改当前工作
git fetch <远程仓库>
将其合并入当前工作
git merge origin/master
取回所有分支的更新:
git fetch --all
取回特定分支的更新:
git fetch <远程仓库> <分支名>
在本地新建远程分支的副本:
本地分支与远程分支名字相同
git checkout --track origin/master
设置不同的本地分支名
git checkout -b <本地分支> origin/master
设置或修改正在跟踪的上游分支:
git branch -u origin/master
取回远程仓库某个分支的更新,再与本地的指定分支合并:
如果是与当前分支合并,则冒号后面的部分可以省略,相当于git fetch + git merge
git pull <远程仓库> <远程分支>:<本地分支>
相当于git fetch + git rebase
git pull --rebase
删除远程分支:
git push origin --delete <branch_name>
变基
将branch2变基到branch1
git rebase <branch1> <branch2>
将当前分支变基到branch1分支上
git rebase <branch1>
解决冲突后git add更新索引,再git rebase --continue完成变基
git checkout <branch1>
git merge <branch2>
将多个提交合并为一个
git merge --squash <branch2>
git branch -d <branch2>
终止变基操作:
git rebase --abort
临时存储:git stash、git stash save
查看已存在更改的列表:
git stash list
从堆栈中删除更改并将其放置在当前工作目录中:
git stash pop
提取储藏(之前已暂存的文件会变成未暂存):
git stash apply
git stash apply stash@{1}
原样提取储藏:
git stash apply --index
删除储藏:
git stash drop stash@{1}
不储藏已暂存的内容:
git stash --keep-index
储藏文件包含未跟踪的:
git stash -u/--include-untracked
从储藏创建一个分支:
git stash branch <分支名>