我有兩周的 git 問題,更準確地說是 git for windows (Git-2.36.1-64)。
這是非常奇怪的行為,導致隨機(對我來說是隨機的)git 丟失了對檔案的跟蹤。我的意思是,我修改了 10 個檔案,當我提交時,它將提交 7 個檔案,但忘記了另外 3 個檔案。然后我必須運行兩個命令:“git rm --cached .-r”和“git reset”。這個命令總是幫助我。有時它會保留所有檔案 2 小時,有時會忘記所有檔案。“git status”命令顯示 repo 是干凈的,沒有任何東西處于 stage 或 unstage 模式。即使我修改檔案......有時它會保留檔案,有時不會。控制臺、VS Code 或 Visual Studio 同樣的問題不是問題,只是失去了跟蹤。
不幸的是,所有存盤庫都會發生這種情況。重新安裝 git 或使用 git 便攜版沒有幫助。我還在 Windows 中使用了“重置 PC”,但保留了我的檔案,它洗掉了環境變數等。也沒有幫助。
我 100% 確定這些存盤庫沒有問題,因為我的同事使用來自我們 Azure DevOps 的相同存盤庫。我還在我的第二臺計算機上使用了這個 repos,從來沒有遇到過這樣的問題。
我的想法已經用完了,這非常打擾我的日常作業......
關于 Windows,我使用的是最新版本的 Windows 11。也許這就是問題所在?
編輯:今天又發生了,所以我可以展示正在發生的事情。

- 檔案正在修改但尚未保存
- 歸檔保存并從更改中消失
- Git 狀態還顯示作業樹干凈
- 運行 Git rm --cached 。-r 和 git 重置。
- 現在 git 跟蹤檔案
uj5u.com熱心網友回復:
[編輯] 這個答案首先提出了檔案同步服務的問題,但經過進一步除錯,看起來您的問題與本地存盤庫中設定的一些標志相關聯:
運行git ls-files --debug | grep -B5 "flags: [^0]"您確定某些檔案assume-unchanged設定了標志(顯示為flags: 8000)。
您可以閱讀使用假設未更改的位部分以git help update-index獲取更多詳細資訊(或讓您頭疼;)),
這是從一個單獨的檔案中洗掉該標志的命令:
git update-index --no-assume-unchanged <filepath>
有一種更短的方法可以獲取完整的assume-unchanged檔案串列:
git ls-files -v | grep "^[a-z]" # see the doc: status is lowercase if assume-unchanged
# to "un assume unchange" all files in one go :
git ls-files -v | grep "^[a-z]" | awk '{ print $2 }' |\
xargs git update-index --no-assume-unchanged
還要檢查core.ignorestat配置值:它應該設定為 false(或者您應該知道將其保持為 true 的充分理由)
git config core.ignorestat
其他一些配置變數會影響如何git處理其索引,它們都以core.(read git help update-indexand search for core.to list) 開頭:
git config --show-origin --get-regexp core
# config variables to look for (2022-05-31 - git version 2.35.0) :
# core.filemode
# core.fsmonitor
# core.ignorestat
# core.splitIndex
# core.symlinks
# core.trustctime
# core.untrackedCache
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483500.html
