亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git status顯示修改,git checkout - <file>不會刪除它們

git status顯示修改,git checkout - <file>不會刪除它們

Git
萬千封印 2019-08-14 17:31:06
git status顯示修改,git checkout - <file>不會刪除它們我想刪除對我的工作副本的所有更改。運行git status顯示修改的文件。我沒做什么似乎刪除了這些修改。例如:rbellamy@PROMETHEUS /d/Development/rhino-etl (master)$ git status# On branch master# Changed but not updated:#   (use "git add <file>..." to update what will be committed)#   (use "git checkout -- <file>..." to discard changes in working directory)##       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs#no changes added to commit (use "git add" and/or "git commit -a")rbellamy@PROMETHEUS /d/Development/rhino-etl (master)$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.csrbellamy@PROMETHEUS /d/Development/rhino-etl (master)$ git status# On branch master# Changed but not updated:#   (use "git add <file>..." to update what will be committed)#   (use "git checkout -- <file>..." to discard changes in working directory)##       modified:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs#no changes added to commit (use "git add" and/or "git commit -a")rbellamy@PROMETHEUS /d/Development/rhino-etl (master)$ git checkout `git ls-files -m`rbellamy@PROMETHEUS /d/Development/rhino-etl (master)$ git statu
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

可能導致此行為的問題有多個:

行結束規范化

我也遇到過這類問題。它歸結為git自動將crlf轉換為lf。這通常是由單個文件中的混合行結尾引起的。該文件在索引中被規范化,但是當git再次對其進行非規范化以將其與工作樹中的文件區分開來時,結果是不同的。

但是,如果要解決此問題,則應禁用core.autocrlf,將所有行結尾更改為lf,然后再次啟用它?;蛘吣梢酝ㄟ^執行以下操作完全禁用它:

git config --global core.autocrlf false

您也可以考慮使用文件而不是core.autocrlf.gitattribute。這樣,您可以確保使用repo的每個人都使用相同的規范化規則,從而防止混合行結尾進入存儲庫。

還要考慮設置core.safecrlf來警告你是否希望git在執行不可逆的規范化時發出警告。

git 聯機幫助說:

CRLF轉換有可能破壞數據。autocrlf = true將在提交期間將CRLF轉換為LF,在結賬時將LF轉換為CRLF。無法通過git重新創建在提交之前包含LF和CRLF混合的文件。對于文本文件,這是正確的做法:它校正行結尾,這樣我們在存儲庫中只有LF行結尾。但對于意外歸類為文本的二進制文件,轉換可能會破壞數據。

不區分大小寫的文件系統

在不區分大小寫的文件系統上,當存儲庫中存在具有不同大小的相同文件名時,git會嘗試檢出兩者,但只有一個文件系統最終結束。當git嘗試比較第二個時,它會將它與錯誤的文件進行比較。

解決方案是切換到不區分大小寫的文件系統,但在大多數情況下這是不可行的,或者重命名并在另一個文件系統上提交其中一個文件。


查看完整回答
反對 回復 2019-08-14
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我在Windows上遇到了這個問題,但是我沒有準備好調查使用的后果config --global core.autocrlf false我也不準備放棄我的藏品中的其他私人分支和好東西,并從一個新的克隆開始。我只需要完成一些事情。現在。

這對我有用,因為你讓git完全重寫你的工作目錄:

git rm --cached -r .git reset --hard

(請注意,在原始問題的評論中建議之前,運行只是git reset --hard不夠好,也沒有明確rm的文件reset


查看完整回答
反對 回復 2019-08-14
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

另一個可能對人有用的解決方案,因為沒有一個文本選項適合我:

  1. .gitattributes一行替換內容:* binary。這告訴git將每個文件視為二進制文件,它無法執行任何操作。

  2. 檢查違規文件的消息是否消失; 如果不是,你可以git checkout -- <files>將它們恢復到存儲庫版本

  3. git checkout -- .gitattributes.gitattributes文件恢復到其初始狀態

  4. 檢查文件是否仍未標記為已更改。


查看完整回答
反對 回復 2019-08-14
  • 3 回答
  • 0 關注
  • 1903 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號