Git 没有获取我更改的文件

Git is not picking up my changed files

我正在尝试创建一个包含我的项目的不同版本的新分支。不幸的是,较新版本的文件虽然内容不同,但不会被 git 注意到已更改且无法提交。

folder\files 几乎完全相同,并且从备份中同时放入目录中。一些文件的内容不同,我需要将这些更改反映在新分支中。

例如,以我尝试使用 2 个文本文件的这个简单模型为例。

文件结构:

project/
├── older/
│   ├── File 1.txt
│   ├── File 2.txt
├── newer/
│   ├── File 1.txt
│   └── File 2.txt

结构与我的实际项目相似,只是文件和子文件夹更多。

Mr JF@Computer MINGW64 ~/Desktop/testproject (master)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

Mr JF@Computer MINGW64 ~/Desktop/testproject (master)
$ stat -c "%y %s %n" *
2018-03-15 15:43:35.764654900 +0000 15 File 1.txt
2018-03-15 15:43:35.765656300 +0000 17 file 2.txt

Mr JF@Computer MINGW64 ~/Desktop/testproject (master)
$ git checkout -b newerbranch
Switched to branch 'newerbranch'

我将文件 1 的较新版本 & 2.txt 复制到此处的存储库中,然后:

Mr JF@Computer MINGW64 ~/Desktop/testproject (newerbranch)
$ git status
On branch newerbranch
nothing to commit, working tree clean

这是怎么回事?

评论部分不够大,我无法粘贴自己的测试,所以我会使用它。如果我是你,我会仔细检查你复制到分支中的文件是否真的不同。当我重复你的测试时它工作正常:

test $ls
file1.txt file2.txt
test $git status
On branch newerbranch
nothing to commit, working tree clean
test $mkdir new
test $cd new
new $echo "new file1" > file1.txt
new $echo "new file2" > file2.txt
new $cd ..
test $rm file1.txt file2.txt
test $mv new/* .
test $rm -rf new/
test $git status
On branch newerbranch
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   file1.txt
    modified:   file2.txt

no changes added to commit (use "git add" and/or "git commit -a")

我会尝试这些东西:

  1. 确保文件不会被 运行 git check-ignore -v path/to/file

  2. 忽略
  3. 运行 git update-index --really-refresh 刷新索引并忽略任何可能已使用 git update-index --assume-unchanged

  4. 静音的文件

如果这确实不是用户错误,我认为问题出在底层文件系统 and/or 如何 Git 与之交互。

所以我也开发了这个问题。事实证明,由于您确定唯一的文件更改是文件夹名称。只需将工作目录文件夹重命名为其他名称即可。 Git 将选择新的更改。提交新的更改。然后你可以将它重命名为你想要的正确名称。 Git 将再次获取更改,然后 git 具有更新后的文件夹名称。