Git认为切换分支时跟踪文件未跟踪

时间:2018-02-07 17:01:37

标签: git

从主分支机构,创建一个新分支并推送到远程

git checkout -b not_master (example second branch)
git checkout not_master
git push origin not_master

现在我的本地工作副本位于not_master分支。

我已将文件名的第一个字符为小写的所有文件重命名为大写。

我注意到git没有记录案例更改所以我使用

更新了我的配置
git config core.ignorecase false 

然后我提交并将更改推送到not_master

出现问题的地方,当尝试切换回master时,git通知我存在未跟踪的文件,这些未跟踪的文件将被结帐覆盖,未跟踪的文件全部是我更改文件名的文件。

如何使用仅在文件名不同的相同文件中保留两个分支?

如果我使用f标志结帐主人,则所有已重命名的文件将在主人中删除。

这是预期的行为吗?

1 个答案:

答案 0 :(得分:2)

您应该为每个文件使用git mv <oldfilename> <newfilename>

默认情况下,配置选项core.ignorecasefalse,仅为不支持区分大小写的文件系统添加优化。 Git认为您在检测到案例更改时删除了这些文件并添加了新文件。为了防止这种不受欢迎的行为,你必须告诉git你要重命名它们。

  

如果为true,则此选项启用各种变通方法以使Git正常工作   更好的文件系统不区分大小写,如FAT。对于   例如,如果目录列表找到&#34; makefile&#34;当Git期待   &#34; Makefile&#34;,Git会假设它实际上是同一个文件,然后继续   把它记住为&#34; Makefile&#34;。

https://git-scm.com/docs/git-config#git-config-coreignoreCase

alex:~/workspace/test (not_master) $ git mv readme.txt README.txt
alex:~/workspace/test (not_master) $ git status
On branch not_master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        renamed:    readme.txt -> README.txt

alex:~/workspace/test (not_master) $ 
alex:~/workspace/test (not_master) $ git commit -m "Renamed files"
[not_master 2b7c940] Renamed files
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename readme.txt => README.txt (100%)
alex:~/workspace/test (not_master) $ git push
alex:~/workspace/test (not_master) $ git checkout master
Switched to branch 'master'