我正在努力变得更熟悉git。我是工作中唯一一个从事这个项目的人,所以我一直只是对主分公司做出改变,但是我需要加强它并且更加流畅地使用它。分支机构。所以昨天我创建了一个分支(QF1),切换到它并开始进行一些更改。当我切换回我的主分支时,我发现了一些东西:它显然切换了分支,并向我提供了一个文件列表,其前面是" M" s(顺便说一下,虽然下面的输出表明文件是在这一点上演,当时我没有执行我的第一个" git checkout master")。因此,在做了一些研究之后,我发现Ms意味着git已将我在QF1分支中所做的更改合并到主服务器中。我不希望这种事发生。我对此仍然有点模糊,但我正在通过git-scm.com来更好地理解它。我认为切换分支会把主人的副本拉回到我的工作目录中,但我的编辑并没有告诉我这已经发生了(gvim)。
我是否需要使用" 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'
我真的不想提交对QF1的更改,因为它们与另一个正在处理的组正在进行的项目相关,而且还没有完成。如果这是我需要做的事情,我可以提交它们并稍后修改提交。
也许我可以直接取消主人的变化?我在QF1中没有真正将它们放在主人的开始阶段。
答案 0 :(得分:2)
“M”并不意味着合并它意味着修改。发生这种情况的原因是因为您对本地文件进行了更改,然后将工作副本切换回主分支而不对更改执行任何操作,因此更改保持不变。为避免这种情况,您必须在切换分支之前提交您的工作。
你声明你想要更好地使用分支机构。这是您在使用分支机构时必须学习的内容之一。提交是第一次为你和其他人最后。进行提交时,您将完成所有更改并进行录制。如果您不想要更改,只需丢弃它们即可。但如果您确实需要更改,请提交它们,即使它们没有完成。只是不要发布分支给别人看。
如果您担心其他人会看到一堆检查点提交,您也可以在推送之前参与sausage making。
从本质上讲,您正在做的是创建一个功能分支,而在继续进行其他操作之前,根本就没有完成该功能。这正是功能分支存在的原因。不要抗拒它,使用它。