合并后分支如何处理

Posted

技术标签:

【中文标题】合并后分支如何处理【英文标题】:What to do with branch after merge 【发布时间】:2012-12-09 23:04:23 【问题描述】:

我有两个分支:masterbranch1。我刚刚将branch1 合并回master,我已经完成了那个分支。我应该删除它还是让它坐在那里?删除它会导致数据丢失吗?

【问题讨论】:

另见:How to use git merge --squash? 【参考方案1】:

如果您在合并后删除该分支,请注意您的 DELETED 分支的所有超链接、URL 和引用都将BROKEN

【讨论】:

【参考方案2】:

我更喜欢 RENAME 而不是 DELETE

我所有的分支都以

的形式命名 Fix/fix-<somedescription>Ftr/ftr-<somedescription> 或 等

使用 Tower 作为我的 git 前端,它将所有 Ftr/Fix/Test/ 等整齐地组织到文件夹中。 完成分支后,我将它们重命名Done/...-<description>

这样它们仍然存在(可以方便地提供历史记录),我可以随时回去知道它是什么(功能、修复、测试等)

【讨论】:

你是否也重命名了远程分支? 保留这些分支似乎是多余的,而重命名它们是疯狂的。我在这里错过了什么吗?您始终可以重新创建分支。 ***.com/questions/3640764/… 合并后保留分支是没有意义的 +1 支持重命名为 Fix、Test 和 Done 的想法...保留分支机构是承包商在我的公司获得报酬的方式。 @ksav 如果你这样做了,它会保留之前合并然后删除之前的历史记录吗?【参考方案3】:

合并后,删除分支就安全了:

git branch -d branch1

另外,如果 git 认为你还没有完全合并它,它会警告你(并拒绝删除分支)。如果您强制删除尚未完全合并的分支(使用git branch -D),您必须采取一些技巧来恢复未合并的提交(见下文)。

虽然有一些理由保留一个分支。例如,如果它是一个功能分支,您可能希望能够对该功能仍然在该分支内进行错误修复。

如果你还想删除远程主机上的分支,你可以这样做:

git push origin :branch1

这将强制删除远程上的分支(但这不会影响已签出的存储库,也不会阻止任何具有推送权限的人重新推送/创建它)。


git reflog 显示最近签出的修订。您在最近的存储库历史记录中签出的任何分支也将显示在那里。除此之外,git fsck 将成为 git 中任何提交丢失情况下的首选工具。

【讨论】:

如果你想保存分支,你可以在删除之前创建一个标签。如果你想回到那个点,你可以签出那个标签。 @Joqus 在这种情况下,我宁愿建议将其保留为分支。只是不要发布它。 以防万一 - 如果您想在删除之前“完全合并”分支,只需在合并后但在删除之前推送该分支。类似git checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1 你删除的分支的历史记录呢?考虑到这一点,删除分支如何安全?

以上是关于合并后分支如何处理的主要内容,如果未能解决你的问题,请参考以下文章

Mercurial质疑如何处理不同的头脑

如何处理错误?

合并到 master 后,如何检查来自哪个分支的哪些提交以及从何处删除的合并?

磁盘上没有足够空间完成此操作,求教如何处理?

合并发布者时如何处理错误?

如何处理 Databricks 中不同数据类型的合并模式选项?