我正在尝试创建一个包含不同版本项目的新分支。不幸的是,较新版本的文件虽然有不同的内容,但不会被git注意到已更改且无法提交。
文件夹\文件几乎相同,并且从备份中同时放入目录。某些文件的内容不同,我需要在新分支中反映这些更改。
举例来说,采用这个简单的模型,我尝试过使用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'
我复制了较新版本的File 1& 2.txt进入存储库,然后:
Mr JF@Computer MINGW64 ~/Desktop/testproject (newerbranch)
$ git status
On branch newerbranch
nothing to commit, working tree clean
这里发生了什么?
答案 0 :(得分:1)
我会尝试这些事情:
确保运行git check-ignore -v path/to/file
运行git update-index --really-refresh
刷新索引并忽略使用git update-index --assume-unchanged
如果确实这不是用户错误,我会认为问题在于底层文件系统和/或Git如何与它接口。
答案 1 :(得分:1)
所以我也解决了这个问题。事实证明,由于可以肯定,唯一的文件更改是文件夹名称。只需将工作目录文件夹重命名为其他名称即可。 Git将选择新的更改。提交新更改。然后,您可以将其重命名为所需的正确名称。 Git将再次获取更改,然后git具有更新的文件夹名称。
答案 2 :(得分:0)
评论部分不足以让我粘贴我自己的测试,所以使用它。如果我是你,我会仔细检查你复制到分支的文件是否真的不同。当我重复你的测试它工作正常:
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")