Squash 在 Github 上将一个分支合并到 master 中,但缺少一些更改

Squash merged a branch into master on Github that was missing some changes

我是我正在从事的项目的唯一开发人员。我正在使用 git 和 Github 进行版本控制。

我的工作流程很简单:

  1. 从 master 创建新的 feature_branch
  2. feature_branch 上的工作完成后,向上游推送。
  3. 审核更改并发出拉取请求。
  4. 拉取请求已合并到主控中。

在远程上合并到 master 中的上一个提交缺少单行注释。我总是可以遵循上面概述的协议并创建一个新的本地分支,将其向上推送并通过此更改将其合并到 master 中。不过,光是一句评论,就显得有些浪费了。

我想到的一个解决方案是执行以下步骤:

git checkout master 
git reset HEAD~ // Revert last commit
// Add the missing comment to my code
git add .
git commit -m 'Commit message' // This would be the same commit message as the reverted commit
git push -f origin master

问题:

  1. 上面提到的解决方案涉及强制推送到远程主机。我担心它会弄乱版本历史。会吗?这是解决问题的最佳方法吗?
  2. 如果不是,执行此类更改的最佳实践/安全方法是什么?

A​​ push -f 会弄乱版本历史。如果你知道你在做什么,它就不会。只要您在本地存储库中没有过时,您正在执行的命令就不会弄乱历史。 (确保在 git push -f 之前做一个 git fetch origin)。

话虽这么说,即使您确定自己不会搞砸历史,您仍然可能不想这样做。您正在创建一个新的提交并替换现有的提交(即使您只添加一行注释)。如果有人更新了您的原始提交,您可能会通过用新提交替换您的提交来给他们带来麻烦。

如果您正在与其他人合作并且已经推送了您的提交,我强烈建议您不要重写历史记录——而是在您的原始提交之后创建一个新的提交,并进行您需要的任何修复。