git 分支管理
更多说明:
https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424
https://www.jianshu.com/p/68a55caa4501
git prune: https://www.cnblogs.com/wangiqngpei557/p/6058115.html
查看本地所有分支:git branch
查看远程所有分支: git branch -r
查看本地和远程所有分支(远程分支显示红色): git branch -a
创建分支: git branch <name>
切换分支:git checkout <name>
或者 git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
,git switch -C <name>
合并某分支到当前分支:git merge <name>
删除完全合并的分支:git branch -d <name>
删除分支,即使未合并的分支:git branch -D <name>
删除远程分支: git push origin --delete <name>
拉取远程某分支到本地: git pull origin <name>:<name>
如:git pull origin dev:dev (拉取远程的 dev 分支到本地的 dev 分支)
分支重命名:
git branch -m <oldName> <newName>
如:git branch -m demo2 version1.0 (重命名分支 demo2 到 version1.0)- 将重命名后的分支推送到远程 :
git push origin <newName>
- 删除远程的旧分支:
git push --delete origin <oldName>
设置上游分支:
git branch <branchname> -u <upstream>
设置指定分支的上游分支,如: git branch v2.0 origin/v2.0git branch -u <upstream>
设置当前分支的上游分支,如: git branch origin/v2.0
以一个新提交的形式合并另一个分支到当前分支:
git merge --squash [branch name]
git commit -m "message"
:: 创建 dev 分支
git branch dev
:: 切换到 dev 分支
git switch dev
:: 切换回 master 分支
git switch master
:: 创建并切换到 dev 分支
git switch -C dev
:: 查看本地所有分支
:: 带*号的表示当前分支
git branch
* dev
master
:: 删除 dev 分支
git branch -d dev
:: 删除远程的 bug 分支
git push origin --delete bug
:: 当 dev 分支已完成并已提交后,想把 dev 的修改合并到 master 分支
:: 1.切换到 master 分支
git switch master
:: 2.合并 dev 分支的修改到当前分支
git merge dev
:: 3.合并成功之后,删除 dev 分支
git branch -d dev
远程有的分支本地没有时
:: 1.确保工作区干净,执行以下命令,从远程仓库下载对象和引用
git fetch
:: 2. 创建并切换到 develop 分支,设置追踪上游分支为 origin/develop,同步上游分支内容
git checkout -b develop origin/develop
:: 查看'未合并'到当前分支的分支列表(未合并的分支,当尝试使用 git branch -d 命令删除它时会失败,如果真的想要删除分支,可以使用 -D 选项强制删除它)
git branch --no-merged
:: 查看'已合并'到当前分支的分支列表
git branch --merged
问题:
-
合并分支时出现冲突
假设有两个分支 dev、master,两个分支分别都创建了一个新的提交,此时合并分支就产生冲突,但依然可以使用git merge dev
,只需要把有冲突的文件修改后再重新提交即可。
强烈建议合并分支时添加--no-ff
参数禁用Fast forward
模式,通常,合并分支时,如果可能,Git会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。::禁用 Fast forward 模式合并提交,因为添加 --no-ff 参数要创建一个新的提交,所以加上 -m 参数,把提交描述写进去。 git merge --no-ff -m "merge with no-ff" dev
-
合并分支时出现 fatal: refusing to merge unrelated histories:
使用git merge
合并其它分支到当前分支时,合并之前,如果当前分支的某些提交历史进行了合并,那么就会出现此问题,解决此问题的办法是在操作命令后面加--allow-unrelated-histories
,如:git merge dev --allow-unrelated-histories