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")
我会尝试这些东西:
确保文件不会被 运行 git check-ignore -v path/to/file
忽略
运行 git update-index --really-refresh
刷新索引并忽略任何可能已使用 git update-index --assume-unchanged
静音的文件
如果这确实不是用户错误,我认为问题出在底层文件系统 and/or 如何 Git 与之交互。
所以我也开发了这个问题。事实证明,由于您确定唯一的文件更改是文件夹名称。只需将工作目录文件夹重命名为其他名称即可。 Git 将选择新的更改。提交新的更改。然后你可以将它重命名为你想要的正确名称。 Git 将再次获取更改,然后 git 具有更新后的文件夹名称。
我正在尝试创建一个包含我的项目的不同版本的新分支。不幸的是,较新版本的文件虽然内容不同,但不会被 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")
我会尝试这些东西:
确保文件不会被 运行
git check-ignore -v path/to/file
忽略
运行
git update-index --really-refresh
刷新索引并忽略任何可能已使用git update-index --assume-unchanged
静音的文件
如果这确实不是用户错误,我认为问题出在底层文件系统 and/or 如何 Git 与之交互。
所以我也开发了这个问题。事实证明,由于您确定唯一的文件更改是文件夹名称。只需将工作目录文件夹重命名为其他名称即可。 Git 将选择新的更改。提交新的更改。然后你可以将它重命名为你想要的正确名称。 Git 将再次获取更改,然后 git 具有更新后的文件夹名称。