如何压缩拉取请求中的提交

时间:2021-02-07 15:02:57

标签: android git github version-control pull-request

我在一个开源存储库上有一个拉取请求,有一个提交,例如 commit a。现在有人要求我更改该提交中的一些代码。 如果我在我的 Android Studio 中打开该分支并更改请求的代码,然后如果我再次提交,将有两次提交。我想更改代码并且在我的拉取请求中只有一个提交。

我尝试过的事情:

我尝试通过 git reset HEAD~2 --soft 将 HEAD 重置为初始提交 然后是 git commit -a -m "combined commit message",但是当我将此分支推送到我的远程存储库时,会出现一个弹出窗口,上面写着 "This branch has conflicts with the remote branch which need to be resolved",其中包含选项 mergerebase。我知道那意味着什么。这是因为我正在更改远程分支中的相同代码。所以我想rebase。然后有一个接收到的 commit a。然后我再次运行 git reset HEAD~2 --soft 并再次运行 git commit -a -m "I have received the commit and I am combining these two commits again" 但当我再次推送它时,出现相同的弹出窗口。

有什么帮助吗?如何更改相同的代码并在该拉取请求中仍然有一次提交?

1 个答案:

答案 0 :(得分:0)

更改代码后,您可以运行 git commit --amend,然后 force push 对您的分支/分支进行更改。然后修改和强制推送将进行更改,但只会在您的分支/分支中将其显示为相同的提交。

注意:如果使用 github,更改将在拉取请求 (PR) 中获取,但会有一个日志说明您在 PR 中强制推送(根据我的经验,维护者在我提交 PR 的回购中,我从未真正指出过它或对此提出任何担忧)。

git commit --amend

您无需在此处进行更改。因此,只需使用相同的消息保存它,除非您实际上还想更改提交消息。然后强制推送:

git push -f

这将使用您的新更改覆盖现有提交(如果在上一步中更改,则新提交消息)

注意:适用标准且广受欢迎的git force push PSA(公共安全公告) - 谨慎使用 force push。但是,如果您已经测试了代码并且可以正常工作,那么您应该没问题。