git - 在公开共享的分支上 git reset --HARD 的后果?

标签 git git-reset git-workflow

我正在阅读 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

我不明白这是什么问题。如果我有一个有 4 个提交的公共(public)分支,A->B->C->D。 D 是最新的提交。如果我硬重置回 B。然后,对于已经获取该分支的其他开发人员,当他们再次执行 git fetch 时,他们会看到他们比远程提交提前 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) 将其带回新的共享分支部分CD 中不需要的内容。当然,这最终取决于手头的情况,这意味着在某些情况下它会很容易解决,但原则上这就是为什么要避免的原因。对于很多同事和/或大量变化,这在团队中通常是一个很大的禁忌。

关于git - 在公开共享的分支上 git reset --HARD 的后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802793/

相关文章:

git - 推送后自动 checkout

git - git revert, git checkout和git reset三者之间有什么不同?

Git 暂存到工作目录?

github - 使用 github 进行团队合作

git - 如何正确使用 git 工作流程和 rebase?

Git: pull 错了分支,然后推送了 merge 。如何撤消?

ios - pull 后 Xcode 构建 "old"代码

git - "--remote"实际上在 "git submodule update --remote"中做了什么?

git - TeamCity 将功能分支推送到 master 分支

Git 还原多个提交