Git&自动将分支与主分支合并

时间:2015-10-07 16:20:21

标签: git merge

我正在努力变得更熟悉git。我是工作中唯一一个从事这个项目的人,所以我一直只是对主分公司做出改变,但是我需要加强它并且更加流畅地使用它。分支机构。所以昨天我创建了一个分支(QF1),切换到它并开始进行一些更改。当我切换回我的主分支时,我发现了一些东西:它显然切换了分支,并向我提供了一个文件列表,其前面是" M" s(顺便说一下,虽然下面的输出表明文件是在这一点上演,当时我没有执行我的第一个" git checkout master")。因此,在做了一些研究之后,我发现Ms意味着git已将我在QF1分支中所做的更改合并到主服务器中。我不希望这种事发生。我对此仍然有点模糊,但我正在通过git-scm.com来更好地理解它。我认为切换分支会把主人的副本拉回到我的工作目录中,但我的编辑并没有告诉我这已经发生了(gvim)。

  1. 我不希望这种事再次发生。如果工作目录中有未更改的文件或者至少已添加到分支索引中,我可以设置告诉它不切换分支吗?
  2. 我是否需要使用" git reset"这里指向我的主分支回到我为主人做的最后一次提交?我在这里没有做任何事情,只是做了一个" git add"。

    $ git status
    # On branch QF1
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       modified:   AuthNotifyResponse.cpp
    #       modified:   AuthNotifyResponse.h
    #       modified:   DataElementsTransactionResponse.cpp
    #       modified:   DataElementsTransactionResponse.h
    #       modified:   TransactionSession.cpp
    #       modified:   authNotifyResponse.xsd
    #       modified:   xch.h
    #
    
    $ git checkout master
    M       AuthNotifyResponse.cpp
    M       AuthNotifyResponse.h
    M       DataElementsTransactionResponse.cpp
    M       DataElementsTransactionResponse.h
    M       TransactionSession.cpp
    M       authNotifyResponse.xsd
    M       xch.h
    Switched to branch 'master'
    
    $ git checkout QF1
    M       AuthNotifyResponse.cpp
    M       AuthNotifyResponse.h
    M       DataElementsTransactionResponse.cpp
    M       DataElementsTransactionResponse.h
    M       TransactionSession.cpp
    M       authNotifyResponse.xsd
    M       xch.h
    Switched to branch 'QF1'
    
  3. 我真的不想提交对QF1的更改,因为它们与另一个正在处理的组正在进行的项目相关,而且还没有完成。如果这是我需要做的事情,我可以提交它们并稍后修改提交。

    也许我可以直接取消主人的变化?我在QF1中没有真正将它们放在主人的开始阶段。

1 个答案:

答案 0 :(得分:2)

“M”并不意味着合并它意味着修改。发生这种情况的原因是因为您对本地文件进行了更改,然后将工作副本切换回主分支而不对更改执行任何操作,因此更改保持不变。为避免这种情况,您必须在切换分支之前提交您的工作。

你声明你想要更好地使用分支机构。这是您在使用分支机构时必须学习的内容之一。提交是第一次为你和其他人最后。进行提交时,您将完成所有更改并进行录制。如果您不想要更改,只需丢弃它们即可。但如果您确实需要更改,请提交它们,即使它们没有完成。只是不要发布分支给别人看。

如果您担心其他人会看到一堆检查点提交,您也可以在推送之前参与sausage making

从本质上讲,您正在做的是创建一个功能分支,而在继续进行其他操作之前,根本就没有完成该功能。这正是功能分支存在的原因。不要抗拒它,使用它。