kingBook

导航

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.0
  • git 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

问题:

  1. 合并分支时出现冲突
    假设有两个分支 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
    
  2. 合并分支时出现 fatal: refusing to merge unrelated histories:
    使用git merge合并其它分支到当前分支时,合并之前,如果当前分支的某些提交历史进行了合并,那么就会出现此问题,解决此问题的办法是在操作命令后面加--allow-unrelated-histories,如:git merge dev --allow-unrelated-histories

posted on 2020-06-19 16:43  kingBook  阅读(130)  评论(0编辑  收藏  举报