git还原更改并取消拉取请求
不幸的是,在与subversion合作多年后,我正试图用git热身。问题如下:git还原更改并取消拉取请求,git,github,Git,Github,不幸的是,在与subversion合作多年后,我正试图用git热身。问题如下: 我完成了一个远程项目 将提交推送到我自己的远程服务器(现在我想还原或干脆消失!) 我在上述步骤中的更改请求拉取 从视觉上看,它看起来像 原始项目: A->B->C->D->E 我自己的远程分叉(x、y、z是我的承诺,如果可能的话,可以还原或删除): 我希望我的分叉遥控器与原来的遥控器一样。然而,在我尝试一个接一个地还原(使用git revert[HASH])我的提交并将这些还原推送到我自
- 我完成了一个远程项目
- 将提交推送到我自己的远程服务器(现在我想还原或干脆消失!)
- 我在上述步骤中的更改请求拉取
A->B->C->D->E
我自己的远程分叉(x、y、z是我的承诺,如果可能的话,可以还原或删除):
我希望我的分叉遥控器与原来的遥控器一样。然而,在我尝试一个接一个地还原(使用git revert[HASH])我的提交并将这些还原推送到我自己的远程设备之后,拉请求似乎并没有消失
如果我找不到解决方案,最后一件事就是去掉我的叉子,重新开始原来的项目
在这样做之前有什么建议吗?假设您在主分支上,想要删除一些提交,您可以
git rebase-i A
运行并从本地回购中删除不需要的提交。()
然后,您可以git push——强制origin master:master
用本地分支覆盖远程master
分支。(警告,我对由此导致的代码丢失不承担任何责任:P)
对于你的pull请求,这更像是一个GitHub问题,而不是git问题,我认为你可以在网页上轻松地关闭它
F.Y.I.
git revert HASH
实际上创建了一个否定散列补丁的提交,它并没有真正按照您的意图还原任何内容;) 假设您在本地回购协议中定义了这两个遥控器:
- 来源:指向原始回购协议
- remote2:指向您自己的个人分叉
origin/somebranch
更新到remote2/otherbranch
,可以执行以下操作:
# make sure you have up to date branch data locally
git fetch origin
git fetch remote2
# force push to remote2 from origin
git push remote2 origin/somebranch:otherbranch --force
要将本地分支重置为与远程分支相同的状态,请执行以下操作:
git reset --hard origin/somebranch
注意:就PR(GitHub Pull Request)而言,您现在(2014年6月24日)可以轻松取消PR(另见“): 通过单击revert,您可以轻松地在GitHub上还原pull请求: 系统将提示您使用还原的更改创建新的拉取请求:
非常有魅力,谢谢。我保证,我永远不会对主分支做任何改进。注意:GitHub现在(2014年6月)有一个PR的“恢复按钮”:请参阅注意:如果:恢复拉请求导致合并冲突原始拉请求最初未在GitHub上合并,您可能需要使用Git手动恢复单个提交(例如,在命令行上使用快进合并)
git reset --hard origin/somebranch