我在一个开源存储库上有一个拉取请求,有一个提交,例如 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"
,其中包含选项 merge
和 rebase
。我知道那意味着什么。这是因为我正在更改远程分支中的相同代码。所以我想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"
但当我再次推送它时,出现相同的弹出窗口。
有什么帮助吗?如何更改相同的代码并在该拉取请求中仍然有一次提交?
答案 0 :(得分:0)
更改代码后,您可以运行 git commit --amend
,然后 force push
对您的分支/分支进行更改。然后修改和强制推送将进行更改,但只会在您的分支/分支中将其显示为相同的提交。
注意:如果使用 github,更改将在拉取请求 (PR) 中获取,但会有一个日志说明您在 PR 中强制推送(根据我的经验,维护者在我提交 PR 的回购中,我从未真正指出过它或对此提出任何担忧)。
git commit --amend
您无需在此处进行更改。因此,只需使用相同的消息保存它,除非您实际上还想更改提交消息。然后强制推送:
git push -f
这将使用您的新更改覆盖现有提交(如果在上一步中更改,则新提交消息)
注意:适用标准且广受欢迎的git force push PSA(公共安全公告) - 谨慎使用 force push。但是,如果您已经测试了代码并且可以正常工作,那么您应该没问题。