[英]Git believes tracked files are untracked when switching branches
在主分支中,創建一個新分支並推送到遠程
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
標志簽出master,則所有已重命名的文件都將在master中刪除。
這是預期的行為嗎?
您應該為每個文件使用git mv <oldfilename> <newfilename>
config選項core.ignorecase
默認情況下為false
,並且僅對不支持區分大小寫的文件系統添加優化。 Git認為您在檢測到大小寫變化時刪除了這些文件並添加了新文件。 為了防止這種不良行為,您必須告訴git您正在重命名它們。
如果為true,則此選項啟用各種變通辦法,以使Git在不區分大小寫的文件系統(例如FAT)上更好地工作。 例如,如果目錄列表在Git期望“ Makefile”時找到“ makefile”,則Git將假定它確實是同一文件,並繼續將其記住為“ Makefile”。
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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.