簡體   English   中英

Git認為在切換分支時未跟蹤文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM