2010-12-02 77 views
0
  1. 说我创建了一个分支,然后合并成主,然后意识到事情出错了。我如何恢复到我合并之前?几个git使用问题

  2. 说我创建一个分支,在它上面工作,然后去合并并获得冲突的分配。假设我不想处理这个问题,现在让新分支成为主人,我该怎么做?

顺便说一句,你在网上看到过的最好的教程是什么,现实生活中的GIT使用模式?

回答

0
  1. 如果没有按下,请检查主设备,然后使用git reset --hard和最后一个良好提交的名称。或者,使用reflog:[email protected]{1}将带您回到以前的位置。如果它被推送,请使用git-revert创建一个新的提交更正。
  2. 检查出主人,然后使用git reset --hard mybranch。这使得高手指向与mybranch相同的提交,实质上是抛弃了分支之后所有对master的工作。再次,如果主人的工作被公诸于众,把它扔掉是个坏主意。
  3. 请参阅Git Development Strategy for Small Team
+0

-1永不改变公共分支上的历史记录 – 2010-12-02 16:32:42

+0

没有指定它是否被推送。 – 2010-12-02 16:33:14

0
  1. 说我创建一个分支,然后合并成高手,那么实现的事情出错。我如何恢复到我合并之前?

    1. 如果你还没有推到主线或有推,知道absoutely确保没有其他人已经从主线拉然后做:

      的git的复位 - 硬HEAD〜N(N为你想提交的数量回去)

    2. 如果你推或无法确定没有人还没有拉升然后坦白到自己的错误,并做:

      混帐恢复

  2. 说我创建了一个分支,在它上面工作,然后去合并并获得冲突的分配。假设我不想处理这个问题,现在让新分支成为主人,我该怎么做?

    git checkout <desired branch> 
    
    
    git branch -d master 
    
    
    git branch -m <desired branch> master 
    
  3. 顺便说一句,什么是你现实生活GIT使用模式在网上看到的最好的教程?

    http://nvie.com/posts/a-successful-git-branching-model/

1
  1. 如果合并,不希望犯,正确的命令是

    git reset --hard [email protected]{1} 
    

    这意味着重置分支到其原来的位置(读使用{}语法 - 你可以通过阅读关于git reflog获得大部分信息)。 HEAD^1也可以工作,但您必须知道您指定了当前提交的第一个父项。

    如果您已经推送了此提交,请谨慎通知所有人。如果您无法在未来强制更新共享存储库中的分支,请不要这样做。

  2. 执行此操作的正确方法是再次合并,但这次是从新分支执行并指定您只需要您的一方。 “他们的”策略已被弃用。

    git merge -s ours master 
    

    然后更新主到另一个分支是:

    git checkout master 
    git merge --ff-only otherbranch 
    

    或者,相反,因为你知道这将是一个快进合并(以上只是一个安全检查) ,您可以将主服务器更新为当前提交而不检出:

    git update-ref refs/heads/master HEAD 
    

    并且您可以继续在您的分支上工作。如果你打算在master上工作,那么使用前面的命令。

  3. 这里有一些链接,我发现有用:

    gitready.com Commuinity Git Book Pro Git Book my article

    其它来源:

    IRC channel on freenode Twitter Search waterfall

    你也可以找我在同一个ID下的twitter上。