簡體   English   中英

Windows上的Git結帳和重置偶爾會顯示隨機文件已更改

[英]Git checkout and reset on Windows occasionally shows random files have changed

通常當我檢查不同的分支或重置時,我會從一個到十幾個文件的窗口中獲得“權限被拒絕”錯誤 - 但是特定文件因運行而異。 這是我剛剛做過的測試的輸出,GIT_TRACE = 1。 跟蹤僅在錯誤消息之前添加了一行:

$ git checkout master
trace: built-in: git 'checkout' 'master'
error: git checkout-index: unable to create file dotnet/src/myfile.cs (Permission denied)
D       dotnet/src/myfile.cs
Switched to branch "master"

我很確定這是在我的機器上使用病毒掃描程序或其他索引服務的比賽。 如果競爭持續存在,我可以使用sysinternals來查看文件句柄打開的進程。 但是,它發生得很快,我不知道有一個工具可以告訴我這個沖突。 令人驚訝的是,我沒有發現任何描述類似行為的人。 如何使這些錯誤停止或進一步診斷問題?

我特別希望通過識別正在進行同步訪問的進程來結束文件訪問競爭。 因此,對於在拒絕編輯時顯示哪個進程具有文件鎖定的工具的建議將非常有用。 我知道'解鎖器'和類似的工具會告訴我哪個進程持有文件鎖定一段時間。 這不適用於此問題,因為該過程會在非常短的時間內鎖定文件。 所以該工具需要在沒有我干預的情況下收集適當的數據,因為我太慢了。

它可能是Windows搜索索引器,它會在創建索引文件時嘗試執行索引文件。 我使用svn checkout遇到了這個問題,並且在成功簽出完整項目之前必須從索引中排除該目錄。

請參閱我的帖子https://connect.microsoft.com/VisualStudio/feedback/details/676699/cannot-open-linker-output-for-writing-or-cannot-close-file

不是git相關的!

Sysinternals的進程監視器顯示Windows資源管理器干擾了新創建的文件,可能是由於某些插件或什么,但它發生了。

禁用UAC虛擬化似乎解決了問題。

請參閱http://code.google.com/p/msysgit/issues/detail?id=320

您可以從以下開始:

 GIT_TRACE=1

但它可能不會顯示有關此文件的原始消息。

通常的原因是一些打開的編輯器想要在更改時重新加載文件,這可能與git的文件操作沖突。
這意味着:通常的策略是 盡可能多地關閉其他應用程序 之后重復你的git命令。

我沒有找到任何描述類似行為的人

例如,在Cygwin上看到這個線程 ,或者這個
您使用的是什么版本的Git(Cygwin上的Git或MSysGit,在Cygwin會話或Dos會話中?)

你可以嘗試sys內部的Filemon

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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