【发布时间】:2014-11-06 09:59:58
【问题描述】:
如果有组织的主要回购。该仓库可能有一个主分支和一个辅助分支。比如说,很少有贡献者在一个月内为二级回购做出贡献,平均每天有 2 到 3 次提交。他们的提交很重要,因为他们正在向主项目的辅助分支发送拉取请求。但是,如果主项目的作者计划在将所有提交推送到主项目后删除二级分支,所有贡献都会保持原样吗?或者由于二级分支被删除,所有贡献都消失了?
【问题讨论】:
标签: git version-control merge
如果有组织的主要回购。该仓库可能有一个主分支和一个辅助分支。比如说,很少有贡献者在一个月内为二级回购做出贡献,平均每天有 2 到 3 次提交。他们的提交很重要,因为他们正在向主项目的辅助分支发送拉取请求。但是,如果主项目的作者计划在将所有提交推送到主项目后删除二级分支,所有贡献都会保持原样吗?或者由于二级分支被删除,所有贡献都消失了?
【问题讨论】:
标签: git version-control merge
据我所知,贡献不会关闭/被删除,因为在侧分支上所做的一切都已被推送(并因此被接管)到主分支。
侧分支只是保持原始代码和工作代码不变的一种(良好且安全的方式),因此如果发生任何会杀死整个程序的事情,更改不会影响主分支。如果侧分支上的版本有效,则可以将其推送到主分支,并且侧分支安全删除(因为如前所述,对侧分支所做的更改已转到主分支)。贡献独立于分支。
【讨论】:
如果对第二个分支的贡献将被合并(包含)到主分支,您可以安全地删除第二个分支,即使它对主分支有相同(相似)的提交。
您应该考虑的是提交哈希 - 如果两个提交引入了相同的更改并且具有相同的提交消息但位于不同的分支上,那么它们将具有不同的哈希,因此删除一个不会影响另一个。
这是因为提交的哈希值不仅从提交消息和提交本身计算,还从以前的提交计算(如果您在早期(父)提交中更改某些内容,它将更改从它(子)派生的所有提交的哈希,例如. 当你做git rebase)。
因此,将一个分支的提交合并/应用到另一个分支可以有效地在目标分支上创建新的提交(即新的哈希),而与源提交无关。
这里有一些很好的资源可以让你进一步了解 git:
https://wildlyinaccurate.com/a-hackers-guide-to-git
http://think-like-a-git.net(这是开始的)
【讨论】: