使用代码清理修改拉取请求中的两个先前提交

Amending two previous commits in a pull request with a code cleanup

我已经向 git 集线器上的 git 仓库发出了拉取请求。拉取请求包含对三个文件的更改:

  1. commit #34a3f04 - 创建一个包含补丁新测试的文件
  2. 提交 #e6298db - 代码的实际补丁
  3. *提交 #49090b3 - 更新日志提交

    • 提交 #3 是 HEAD 在我本地仓库中的位置。

所以我搞砸了,忘了整理我的代码。所以 #1 和 #2 提交未通过 Travis 测试。

从那以后,我整理了本地存储库中两个文件中的代码。现在我想弄清楚如何将这些干净地提交回拉取请求。我想我必须修改前两次提交,但我不太确定最好的方法是什么。我确定我会把它搞砸,让自己头痛一个小时,我希望避免这种情况。

您可以在此处使用变基来修改历史记录或压缩您的提交。我可以看到你有几个选项:

Rebase 并使用 "edit" 修改您的提交

"edit" 的描述:e, edit <commit> = use commit, but stop for amending。您可以使用它返回修复 linting 或提交 2 和 3 上的任何内容,然后将它们再次包含在这些提交中。

git rebase -i HEAD~3
# use "e" or "edit" for commits 1 and 2
# adjust them as necessary, then git rebase --continue each time

把一切都压缩成一个

您失去了提交消息的粒度,但这也是解决您的问题的一种快速简便的方法。

git rebase -i HEAD~3
# choose "s" or "squash", or "f" or "fixup" which is like squash but discards commit
# messages

您还可以 git reset target-branch-name 这将进行软重置,将您的所有更改保留在您的分支和 target-branch-name 之间,但会重置您的提交。然后,您可以一起修复所有代码,并根据需要重新提交它们。


所有这些建议都需要强制推送,因为您已经重写了本地分支的历史记录。