Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么git checkout会打印“签出”;M";对于一些未更改的文件?_Git - Fatal编程技术网

为什么git checkout会打印“签出”;M";对于一些未更改的文件?

为什么git checkout会打印“签出”;M";对于一些未更改的文件?,git,Git,事情就这样发生了: $ git branch * master ...lots of other branches... $ git checkout -tb feat/bandwidthprelude M MANIFEST.in M lint.sh M setup.py M ...some other source files... Branch 'feat/bandwidthprelude' set up to track local branch 'master'. Sw

事情就这样发生了:

$ git branch
* master
...lots of other branches...

$ git checkout -tb feat/bandwidthprelude
M   MANIFEST.in
M   lint.sh
M   setup.py
M   ...some other source files...
Branch 'feat/bandwidthprelude' set up to track local branch 'master'.
Switched to a new branch 'feat/bandwidthprelude'

$ git status
On branch feat/bandwidthprelude
Your branch is up to date with 'master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    ...[redacted]...

nothing added to commit but untracked files present (use "git add" to track)
$git分支
*主人
…许多其他分支。。。
$git签出-tb专长/带宽前奏
我是约翰
我是林特·什
M setup.py
M…其他一些源文件。。。
分支“专长/带宽前奏”设置用于跟踪本地分支“大师”。
切换到新分支“专长/带宽前奏曲”
$git状态
关于分支专长/带宽前奏曲
您的分支机构与“master”是最新的。
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
…[修订]。。。
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)
我的理解是,当切换分支时,
git checkout
,当文件有本地修改时,将打印
M
。但是在本例中,根据
git status
(以及我的内存),这些文件没有本地修改,尽管它们是我最近编辑并提交的文件)。我确认我最后的编辑没有丢失发生了什么事?


如果我重复使用master和git checkout-tb,同样的事情不会发生。

看起来这是由文件元数据更改触发的误报(修改是真实的,但不是git跟踪的信息)

具体来说,我所做的不寻常的事情是意外地关闭了我的编辑器(macOS上的TextMate),这导致它编写一些信息来打开文件的元数据,从而更新它们的修改时间。随后的
git签出-b
(但不是出于某种原因切换到现有分支的
git签出
)将产生虚假的
M

如果我在git checkout-b之前触摸一个文件,就会发生完全相同的情况


因此,这只是一个小小的、几乎无害的git bug。

看起来这是一个误报(修改是真实的,但不是git跟踪的信息),由文件元数据更改触发

具体来说,我所做的不寻常的事情是意外地关闭了我的编辑器(macOS上的TextMate),这导致它编写一些信息来打开文件的元数据,从而更新它们的修改时间。随后的
git签出-b
(但不是出于某种原因切换到现有分支的
git签出
)将产生虚假的
M

如果我在git checkout-b之前触摸一个文件,就会发生完全相同的情况


所以,这只是一个小小的、几乎无害的git bug。

是的,显然,在结帐的快速路径部分有点马虎。如果您没有实际更改提交,它只使用stat数据,而不在适当的情况下刷新缓存的mtime。是的,显然,签出中的快速路径有点马虎。如果您没有实际更改提交,它只会使用stat数据,而不会在适当的情况下刷新缓存的mtime。