git 在公开共享的分支上重置 --HARD 的后果?
Consequences of git reset --HARD on a branch that's publicly shared?
我正在阅读 git 教程 here,其中提到:
don’t use git reset on a publicly-visible branch that other developers
pull from, as it will force needless merges on other developers to
clean up the history
我不明白这是什么问题。如果我有一个 public 分支,比如 4 次提交,A->B->C->D。 D 是最新的提交。如果我硬重置回 B。然后,对于已经获取此分支的其他开发人员,当他们再次 git 获取时,他们会看到他们比远程提前 2 次提交,因此他们重置回B和都好吧?还是我错过了什么?
除了(比方说)Bob 在他的本地提交了两次,在 D
之上
A---B---C---D <<< shared-master, origin/shared-master
\
E---F <<< feature-bob
但现在在获取之后他看到了这个:
A---B <<< origin/shared-master
\
C---D <<< shared-master
\
E---F <<< feature-bob
所以他(和其他所有人)可能必须解决讨厌的冲突,以在 B
之上重新设置他的分支的基址,而不会 1) 破坏他自己的功能,或者 2) 将新的共享分支部分带回C
和 D
中不需要的内容。当然,这最终取决于手头的情况,这意味着在某些情况下它会很容易解决,但原则上这就是为什么要避免的原因。有很多同事 and/or 有很多变化,这在团队中通常是一个很大的禁忌。
我正在阅读 git 教程 here,其中提到:
don’t use git reset on a publicly-visible branch that other developers pull from, as it will force needless merges on other developers to clean up the history
我不明白这是什么问题。如果我有一个 public 分支,比如 4 次提交,A->B->C->D。 D 是最新的提交。如果我硬重置回 B。然后,对于已经获取此分支的其他开发人员,当他们再次 git 获取时,他们会看到他们比远程提前 2 次提交,因此他们重置回B和都好吧?还是我错过了什么?
除了(比方说)Bob 在他的本地提交了两次,在 D
A---B---C---D <<< shared-master, origin/shared-master
\
E---F <<< feature-bob
但现在在获取之后他看到了这个:
A---B <<< origin/shared-master
\
C---D <<< shared-master
\
E---F <<< feature-bob
所以他(和其他所有人)可能必须解决讨厌的冲突,以在 B
之上重新设置他的分支的基址,而不会 1) 破坏他自己的功能,或者 2) 将新的共享分支部分带回C
和 D
中不需要的内容。当然,这最终取决于手头的情况,这意味着在某些情况下它会很容易解决,但原则上这就是为什么要避免的原因。有很多同事 and/or 有很多变化,这在团队中通常是一个很大的禁忌。