kaq*_*qao 0 git github pull-request
我在Github上分叉了一个项目,做了一个提交,推到了我的分支并提出了拉取请求.一切都很好.
然后,我不断提交和推送不相关的东西,不知道所有这些都将被添加到我的拉取请求中.
我需要在我的fork中保存的更改(在不同的分支或其他内容中),但我必须从pull请求中删除除第一次提交之外的所有更改.我该怎么做呢?
首先,确保当前工作树是干净的,然后在最后一次提交时创建一个新分支,以确保不丢失工作:
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 - 看看你是否感兴趣!