-
A1. 附录 A:在其他环境中使用 Git
- A1.1 图形界面
- A1.2 在 Visual Studio 中使用 Git
- A1.3 在 Visual Studio Code 中使用 Git
- A1.4 在 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中使用 Git
- A1.5 在 Sublime Text 中使用 Git
- A1.6 在 Bash 中使用 Git
- A1.7 在 Zsh 中使用 Git
- A1.8 在 PowerShell 中使用 Git
- A1.9 总结
-
A2. 附录 B:在你的应用程序中嵌入 Git
-
A3. 附录 C:Git 命令
3.3 Git 分支 - 分支管理
分支管理
既然您已经创建、合并和删除了一些分支,让我们来看看一些分支管理工具,当您开始经常使用分支时,这些工具将会派上用场。
git branch
命令不仅仅是创建和删除分支。 如果您在不带任何参数的情况下运行它,您将获得当前分支的简单列表。
$ git branch
iss53
* master
testing
注意 *
字符,它位于 master
分支的前面:它指示您当前检出的分支 (即 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
有用的 --merged
和 --no-merged
选项可以过滤此列表,以查找您已经或尚未合并到当前分支中的分支。 要查看哪些分支已经合并到您当前所在的分支中,您可以运行 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
,正如帮助消息所指出的那样。
提示
|
上述选项, 您可以始终提供一个额外的参数,以询问相对于其他分支的合并状态,而无需首先检出该其他分支,例如,哪些内容未合并到
|
更改分支名称
警告
|
不要重命名仍在其他协作者使用的分支。如果未阅读更改 master 分支名称一节,请勿重命名 master/main/mainline 等分支。 |
假设你有一个名为 bad-branch-name
的分支,你想将其更改为 corrected-branch-name
,同时保留所有历史记录。 你还想更改远程(GitHub、GitLab、其他服务器)上的分支名称。 你该怎么做呢?
使用 git branch --move
命令在本地重命名分支
$ git branch --move 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
现在,错误的分支名称已完全替换为更正后的分支名称。
更改 master 分支名称
警告
|
更改诸如 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
分支
$ git push origin --delete master