可以重写单个开发者分支的历史是危险的吗?

时间:2016-01-28 12:23:06

标签: git version-control git-branch git-rewrite-history backup-strategies

我使用分支机构作为WIP的备份。 但回过头来我想恢复git diff,所以我可以在继续工作的同时再次对变化进行概述。

所以我通常会重置 WIP-commit git reset HEAD^)并重新开始工作。但是当我需要再次提交(一个明确的提交或 WIP-commit )并将其推送到远程源时,我想知道这个新的分歧提交是否会给协作者拉动同一个分支带来问题< /强>

我知道他们会做出改变并提交。 但是,如果他们只是拉动分支,但他们从未接触过它,那么他们会推动第二次新的分歧WIP提交呢?

是否足够安全,只是同意不接触合作者的分支?

1 个答案:

答案 0 :(得分:0)

如果你的最后一次提交没有被推送,那么git reset HEAD^就不会搞砸了。但是如果你推动了,我会建议反对它,即使其他合作者没有修改那个分支。我们假设你做了一个初始提交A并推送它,然后git reset HEAD^并进行提交B。当您尝试推送它时,您将收到错误,因为您的BA具有相同的父级,因此git无法在服务器上进行快进合并。在这种情况下,错误消息将建议您执行git pull。但是一旦你这样做,你将有一个合并AB的新合并提交。

现在,你可以通过强制推动(因此吹掉A)来解决这个问题,但只有在你推动A之后没有人从回购中撤出时,这才有效。否则,下次他们拉动时,他们会在本地计算机上合并AB,然后将该合并推送回服务器。

这么长的故事简短:永远不要重写被推动的历史。