在拉取请求中修改了之前的两个提交,并进行了代码清理。

问题描述 投票:0回答:1

我向github上的git repo提出了一个拉取请求。这个拉取请求包括对三个文件的修改。

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

    • 提交#3是HEAD在我的本地repo上的位置。

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

后来我把这两个文件中的代码整理好了,放在了我的本地仓库里。现在我想知道如何将这两个文件干净利落地提交到拉取请求中。我想我必须修改之前的两个提交,但我不太确定什么是最好的方法。我相信我会把事情搞砸,让自己头疼一个小时,我希望能避免这种情况。

git git-commit
1个回答
2
投票

你可以在这里使用rebase来修改历史,或者压制你的提交。你有几个选择。

重写代码,然后用 "编辑 "来修改你的提交记录

编辑 "的描述。e, edit <commit> = use commit, but stop for amending. 你可以用它来修复你在提交 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 但重新设置你的提交。然后,你可以把所有的代码修整在一起,然后按照你的意愿重新提交。


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

© www.soinside.com 2019 - 2024. All rights reserved.