如何压缩拉取请求中的提交
How to squash commits in a 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"
以及选项 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"
但是当我再次按下它时,出现相同的弹出窗口。
有什么帮助吗?如何更改相同的代码并在该拉取请求中仍然有一个提交?
更改代码后,您可以 运行 一个 git commit --amend
然后 force push
更改您的 fork/branch。然后修改和强制推送将进行更改,但仅将其显示为 fork/branch.
中的相同提交
注意:如果使用 github,更改将在拉取请求 (PR) 中获取,但会有一个日志说明您强制推入 PR(根据我的经验,我提交 PR 的 repo 的维护者从未真正指出它或对此提出任何担忧)。
git commit --amend
您无需在此处进行更改。所以只需将它与相同的消息一起保存,除非您实际上还想更改提交消息。然后强制推送:
git push -f
这将用您的新更改覆盖现有提交(如果在上一步中更改,则新提交消息)
注:标准广受欢迎git强推PSA(public安全公告)适用- 小心使用力推。但是,如果您已经测试了您的代码并且它可以正常工作,那么您应该没问题。
我有一个开源存储库的拉取请求,其中包含一次提交,例如 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"
但是当我再次按下它时,出现相同的弹出窗口。
有什么帮助吗?如何更改相同的代码并在该拉取请求中仍然有一个提交?
更改代码后,您可以 运行 一个 git commit --amend
然后 force push
更改您的 fork/branch。然后修改和强制推送将进行更改,但仅将其显示为 fork/branch.
注意:如果使用 github,更改将在拉取请求 (PR) 中获取,但会有一个日志说明您强制推入 PR(根据我的经验,我提交 PR 的 repo 的维护者从未真正指出它或对此提出任何担忧)。
git commit --amend
您无需在此处进行更改。所以只需将它与相同的消息一起保存,除非您实际上还想更改提交消息。然后强制推送:
git push -f
这将用您的新更改覆盖现有提交(如果在上一步中更改,则新提交消息)
注:标准广受欢迎git强推PSA(public安全公告)适用- 小心使用力推。但是,如果您已经测试了您的代码并且它可以正常工作,那么您应该没问题。