从主分支机构,创建一个新分支并推送到远程
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
标志结帐主人,则所有已重命名的文件将在主人中删除。
这是预期的行为吗?
答案 0 :(得分:2)
您应该为每个文件使用git mv <oldfilename> <newfilename>
默认情况下,配置选项core.ignorecase
为false
,仅为不支持区分大小写的文件系统添加优化。 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'