2015-10-19 85 views
2

在结帐之前是否需要提交git存储库?我听说过,因为我可以失去这些变化。但是,在修改文件并检出后,我可以轻松地回到我的上一个分支,并且我没有失去任何工作。该文件具有M状态。没有提交的Git结账

他们说hereM意味着合并(这很奇怪,我想它通知我有关修改)。

$ git checkout master 
M README 
Switched to branch 'master' 
$ cat README 
This is the README file. 
This line was added in the working directory while in the test branch. 

从'Git Checkout Without Committing:WITHOUT A Conflict'部分。 M README是什么意思?

感谢您的帮助。

回答

2

如果可以删除任何当前修改,则将不处理A git checkout

https://git-scm.com/book/en/v2/book/01-introduction/images/areas.png

(来自 “Getting Started - Git Basics” 图像)

example mentioned实际上使用git checkout -m(并且没有提交),这意味着修改被合并:

-m 
--merge 

当如果您对o进行了本地修改,则切换分支,ne或更多文件在当前分支和您正在切换的分支之间不同,该命令拒绝切换分支以保留上下文中的修改。

但是,使用此选项,当前分支,工作树内容和新分支之间的三向合并完成,您将在新分支上。

这是最好的承诺(或藏匿)结帐前的电流变化,但checkout -m至少可以合并这些变化,而不是失败(或者在checkout -f情况下将其删除的(见“What's the difference between “git reset” and “git checkout”?”)。

什么是中号自述意味着

这是不分级的(未提交)的修改,在正在进行的工作。
一个git checkout -m允许将该修改合并到目标分支中,而不是使简单的git checkout失败。
另请参阅“What’s In The Index? What’s Changed?”。

https://git-scm.com/figures/18333fig0201-tn.png

+0

@ user107986那就是想法:之前的测试分支中加入一个冲突'git的结帐-m master'的:改变被合并,而合并冲突所示。 – VonC

+0

删除评论并将其置于问题中。 – user107986

+0

@ user107986我已经编辑了相应的答案。 – VonC