从现有的pull请求中删除提交

kaq*_*qao 0 git github pull-request

我在Github上分叉了一个项目,做了一个提交,推到了我的分支并提出了拉取请求.一切都很好.

然后,我不断提交和推送不相关的东西,不知道所有这些都将被添加到我的拉取请求中.

我需要在我的fork中保存的更改(在不同的分支或其他内容中),但我必须从pull请求中删除除第一次提交之外的所有更改.我该怎么做呢?

Rob*_*ann 5

首先,确保当前工作树是干净的,然后在最后一次提交时创建一个新分支,以确保不丢失工作:

git stash
git checkout -b unrelated-stuff
Run Code Online (Sandbox Code Playgroud)

现在,您切换回拉取请求分支:

git checkout feature

然后重置分支以指向特定的提交ID(您将通过git log或通过任何GUI应用程序找到ID ):

git reset --hard COMMIT_ID

一旦您的本地feature分支指向您喜欢的提交,您可以强制将该分支推送到服务器:

git push --force

此时,您在服务器上的pull请求将仅包含相关提交,并且unrelated-stuff分支上仍然提供不相关的工作.

如果您在git stash编辑之前有任何未保存的工作,您可以将其取回git stash pop.

请注意,强制推送是git中非常不鼓励的操作,因为它可能会破坏其他人的本地存储库.在拉取请求的情况下通常应该是好的(许多回购所有者更喜欢仅在审阅后干净整洁时合并PR),但永远不要强行推入主人或其他可能正在其他人工作的分支机构.

理解和学习git的一个很好的资源是http://learngitbranching.js.org - 看看你是否感兴趣!