Squash将分支合并到Github的master上,该分支缺少一些更改

时间:2020-01-17 08:06:43

标签: git github git-reset

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

我的工作流程非常简单:

  1. 从母版创建新的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. 如果没有,执行此更改的最佳实践/安全方法是什么?

1 个答案:

答案 0 :(得分:1)

push -f可能会弄乱版本历史记录。如果您知道自己在做什么,那就不会了。只要您的本地存储库不是最新的,您正在执行的命令就不会弄乱历史记录。 (请确保在git fetch origin之前先做git push -f)。

话虽如此,即使您确定您不会弄乱历史,您仍然可能不想这样做。您正在创建一个新的提交并替换现有的提交(即使您仅添加一行注释)。如果有人用您的原始提交进行了更新,则可以用一个新的提交来代替他们。

如果您正在与其他人一起工作并且已经推送了您的提交,我强烈建议您不要重写历史记录-而是在原始文档之后使用所需的任何修复程序创建一个新的提交。