2012-07-10 36 views
1

我正在本地分支VISS上工作。然后,我决定看看以前的承诺:如何在签出前次提交后合并到本地分支

git的结帐98ea3c8042c39e

我做的代码一些重要的变化。然后我又犯了。

现在我需要回到我的分支VISS保持这些更改。

我应该怎么做,如果我想:

  1. 回到我VISS分支丢弃做了什么检查出来之前提交(98ea3c8042c39e)前。

  2. 回到我的VISS分支合并新的变化与我在VISS的顶部做了什么。

回答

2
  1. 回到你的分支,抛弃一切:

    git checkout VISS 
    

    你的新的承诺之上98ea3c将悬空在荒郊野外,并最终将垃圾通过git的收集。

    相反,如果你愿意做98ea3cVISS顶部和丢弃什么VISS目前指向,做到以下几点:

    git checkout VISS 
    git reset --hard 98ea3c 
    
  2. 回去VISS和顶部合并的新变化它:

    # On the new commit you just made: 
    git rebase VISS 
    
    # Now take note of what the commit ID is. Assume I got "abc123"; then: 
    git checkout VISS 
    git merge abc123 
    

    现在,您将有VISS与变化的最新承诺,并没有合并提交。

+0

第2项解决了我的一个问题,但与第一个问题一样,实际上我想保留在回滚和丢弃VISS后做出的重要更改。我的意思是假设我从A点开始,然后进入B点,然后再到C点(这是我目前的VISS)。然后我倒退到提交B,做了一些修改以达到一个点(比如说D)。现在我想让git忽略B-to-C开发,并让VISS指向D ...这可能吗? – rahman 2012-07-11 03:54:08

+0

当然。签出'VISS',然后发出'git reset --hard D'(其中'D'是该提交的ID)。现在'VISS'指向'D'。 – Ashe 2012-07-11 04:10:34

+0

感谢Len,我将其标记为正确答案。 perhapse你反映了上述评论给你的答案,以消除任何混乱(如果有的话).tanx再次 – rahman 2012-07-11 07:52:41

相关问题