2013-05-07 106 views
6

这个问题不同于其他问题,我想保留一些提交,而我恢复一些提交。如何恢复`git fetch upstream;混帐上游/主'?

这是我的设置。

Upstream repo on github (public repo which I don't own) 
Personal repo on my server(git clone --bare $upstream) 

我的工作流程是这样的:

Need to customize my personal branch 
    1. check out origin/master(Personal) 
    2. make changes 
    3. push to origin/master 

Need to get new feature or bug fix from the original author(github) 
    1. git fetch upstream 
    2. git merge upstream/master 

现在我发现上游/大师有一个错误,想要恢复,
我怎么回去的状态,我取前/合并上游最后一次?

编辑。

假设

  1. 我合并上游
  2. 我合并团队成员推到原点/主(个人)

现在我想撤消步骤1的内容。

git reset --hard co mmit_sha_of_one_prior_the_merge_1

(尽管找到sha并不容易。 git的日志显示了很多的承诺上游 煞的,所以它不容易找到 提交-SHA-of_one_prior_the_merge_1这是upstreamorigin/master不)

如何保持第2步合并?

假设一个稍微复杂的情况

  1. 我合并上游
  2. 我合并什么其他团队成员推到个人
  3. 我也把我的工作,个人

现在我想撤销上游合并。 我该怎么办?

+0

http://stackoverflow.com/questions/2389361/undo-a-git-merge – 1615903 2013-05-07 09:39:51

回答

-1

您可以与您当地的master分支重置为origin/master状态(如果你还没有您的合并推到origin/master):

git reset --hard origin/master 

如果这是不可能的,你可以使用引用日志:

git reflog 

你可以看到undoing a git rebase的更多细节

+0

这是OP想要的。 – 2013-05-07 10:10:00

2

由于你有一个实际的合并提交 - 因为你已经介绍你应该可以这样做:

git reset --hard HEAD~1 

假设你最近一次提交的是合并提交问题。

+0

我在我的私人回购中有其他提交,除了合并提交 – eugene 2013-07-10 09:49:01