分支管理
现在已经创建、合并和删除了一些分支,让我们来看看一些分支管理工具,在开始经常使用分支时会很有用。
git branch命令不仅仅用于创建和删除分支。如果不带参数运行它,会得到当前分支的简单列表。
$ git branch
iss53
* master
Testing
这个*字符是前缀,表示当前检出的分支(即HEAD指向的分支)。这意味着如果在这个点提交,master分支将会随着新工作向前移动。要查看每个分支上的最后一次提交,可以运行git branch -v。
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
要查看已经合并到当前分支的分支,可以运行git branch --merged。
$ git branch --merged
iss53
* master
因为之前已经合并了iss53分支,所以在列表中看到了它。列表中没有*号前缀的分支通常可以使用git branch -d进行删除;因为已经将它们的工作合并到另一个分支中,所以不会丢失任何内容。
要查看所有包含尚未合并工作的分支,可以运行git branch --no-merged。
$ git branch --no-merged
Testing
这显示了另一个分支。因为它包含尚未合并的工作,尝试使用git branch -d删除它将会失败。
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
如果真的想删除该分支并且丢失那些工作,你可以使用-D参数来强制删除,就像提示信息中指出的那样。
Tip:
上述描述的选项--merged和--no-merged,如果没有给定提交或分支名称作为参数,将分别显示已合并或未合并到当前分支的内容。
可以始终提供额外的参数来询问与其他分支的合并状态,而无需首先检出该其他分支,就像是,未合并到主分支的内容是什么。
$ git checkout testing
$ git branch --no-merged master
topicA
featureB
Caution
不要重命名仍然被其他合作者使用的分支。不要在没有阅读更改主分支名称部分的情况下重命名主分支(如master/main/mainline)。
要将分支从bad-branch-name更改为corrected-branch-name,并保留所有历史记录,以及在远程(GitHub、GitLab或其他服务器)更改分支名称,可以按照以下步骤操作:
在本地更改分支名称:
$ git branch -m bad-branch-name corrected-branch-name
这会将bad-branch-name更改为corrected-branch-name,但此更改目前只是本地的。为了让其他人在远程看到更正后的分支,需要将其推送。
$ git push --set-upstream origin corrected-branch-name
现在我们将简要查看一下我们目前所处的位置。
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
请注意,目前位于分支corrected-branch-name,并且该分支已在远程上可用。然而,具有错误名称的分支仍然存在,可以通过执行以下命令将其删除。
$ git push origin --delete bad-branch-name
Warning:
将分支名称更改为像master/main/mainline/default这样的名称会中断仓库使用的集成、服务、辅助工具和构建/发布脚本。在执行此操作之前,请确保与协作者进行咨询。另外,请确保彻底搜索存储库,并更新代码和脚本中对旧分支名称的任何引用。
使用以下命令将本地master分支重命名为main。
$ git branch --move master main
现在已经没有本地的master分支了,因为它已经被重命名为main分支。
要让其他人看到新的main分支,需要将其推送到远程。这将使重命名的分支在远程上可用。
$ git push --set-upstream origin main
现在查看下分支状态如下:
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
本地master分支已经消失,因为它已被替换为main分支。main分支已经存在于远程。然而,旧的master分支仍然存在于远程。其他合作者将继续将master分支作为其工作的基础,直到我们进行进一步的更改。
现在,需要完成一些任务来完成过渡:
依赖于该项目的任何项目都需要更新其代码或配置
更新任何测试运行配置文件
调整构建和发布脚本
在仓库主机上重定向设置,例如仓库的默认分支、合并规则以及与分支名称匹配的其他设置。
更新文档中对旧分支的引用。
关闭或合并任何针对旧分支的拉取请求。
在完成所有这些任务并确信main分支与master分支的表现相同后,可以删除master分支:文章来源:https://www.toymoban.com/news/detail-847022.html
$ git push origin --delete master文章来源地址https://www.toymoban.com/news/detail-847022.html
到了这里,关于git分支-分支管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!