【发布时间】:2012-12-09 23:04:23
【问题描述】:
我有两个分支:master 和 branch1。我刚刚将branch1 合并回master,我已经完成了那个分支。我应该删除它还是让它坐在那里?删除它会导致数据丢失吗?
【问题讨论】:
我有两个分支:master 和 branch1。我刚刚将branch1 合并回master,我已经完成了那个分支。我应该删除它还是让它坐在那里?删除它会导致数据丢失吗?
【问题讨论】:
如果您在合并后删除该分支,请注意您的 DELETED 分支的所有超链接、URL 和引用都将BROKEN。
【讨论】:
我更喜欢 RENAME 而不是 DELETE
我所有的分支都以
的形式命名Fix/fix-<somedescription> 或 Ftr/ftr-<somedescription> 或 使用 Tower 作为我的 git 前端,它将所有 Ftr/、Fix/、Test/ 等整齐地组织到文件夹中。
完成分支后,我将它们重命名为Done/...-<description>。
这样它们仍然存在(可以方便地提供历史记录),我可以随时回去知道它是什么(功能、修复、测试等)
【讨论】:
合并后,删除分支就安全了:
git branch -d branch1
另外,如果 git 认为你还没有完全合并它,它会警告你(并拒绝删除分支)。如果您强制删除尚未完全合并的分支(使用git branch -D),您必须采取一些技巧来恢复未合并的提交(见下文)。
虽然有一些理由保留一个分支。例如,如果它是一个功能分支,您可能希望能够对该功能仍然在该分支内进行错误修复。
如果你还想删除远程主机上的分支,你可以这样做:
git push origin :branch1
这将强制删除远程上的分支(但这不会影响已签出的存储库,也不会阻止任何具有推送权限的人重新推送/创建它)。
git reflog 显示最近签出的修订。您在最近的存储库历史记录中签出的任何分支也将显示在那里。除此之外,git fsck 将成为 git 中任何提交丢失情况下的首选工具。
【讨论】:
git checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1