git还原更改并取消拉取请求

时间:2014-02-04 21:28:47

标签: git github

不幸的是,经过多年的颠覆工作,我正试着用git做热身。问题如下:

  • 我分叉了一个远程项目。
  • 推送提交(现在我想恢复或只是消失!)到我自己的遥控器。
  • 请求上述步骤中的更改。

视觉上看起来像;

原创项目:

A->B->C->D->E

我自己的远程分支(x,y,z是我提交的,如果可能的话还原或删除):

A->X->Y->Z->C->D->E

我希望我的分叉遥控器与原始遥控器一样。然而,在我尝试恢复之后(使用git revert [HASH])我一个接一个地提交并将这些恢复推送到我自己的遥控器,看起来拉请求并没有消失。

如果我无法获得解决方案,最后一件事就是删除我的fork,并重新创建原始项目。

在此之前有任何建议吗?

3 个答案:

答案 0 :(得分:2)

注意:在PR(GitHub Pull Request)方面,您现在(2014年6月24日)可以轻松取消PR (另见" Reverting a pull request"):

Introducing the Revert Button

  

您可以通过点击还原:

轻松恢复GitHub上的拉取请求

https://camo.githubusercontent.com/0d3350caf2bb1cba53123ffeafc00ca702b1b164/68747470733a2f2f6769746875622d696d616765732e73332e616d617a6f6e6177732e636f6d2f68656c702f70756c6c5f72657175657374732f7265766572742d70756c6c2d726571756573742d6c696e6b2e706e67

  

系统会提示您使用还原的更改创建新的拉取请求:

https://camo.githubusercontent.com/973efae3cc2764fc1353885a6a45b9a518d9b78b/68747470733a2f2f6769746875622d696d616765732e73332e616d617a6f6e6177732e636f6d2f68656c702f70756c6c5f72657175657374732f7265766572742d70756c6c2d726571756573742d6e65772d70722e706e67

答案 1 :(得分:1)

假设您在主分支上并希望删除一些提交,您可以git rebase -i A运行并从本地仓库中删除不需要的提交。 (there are some good git rebase -i informations on GitHub

然后,您可以git push --force origin master:master用您的本地分支覆盖远程master分支。 (警告,我也不对丢失的代码负责:P)。

对于你的拉取请求,这是一个GitHub问题而不是git问题,我认为你可以轻松地在网页上关闭它。

F.Y.I。 git revert HASH实际上创建了一个否定HASH补丁的提交,它并没有像你想要的那样真正还原任何东西;)

答案 2 :(得分:0)

假设您在本地仓库中定义了这两个遥控器:

  • origin:指向原始仓库
  • 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