2016-01-18 122 views
2

我正在嘗試向我的.gitignore文件添加一個錯誤日誌,並且在讀取某處時,我必須在將文件添加到.gitignore之後特別解開該文件。不知怎的,我結束了使用該這樣做:git - 恢復更新索引/忽略的文件,所以我可以改變分支?

git update-index --assume-unchanged Logs/Err.log

所有看起來很好,直到我去切換到我的開發分支合併。我不能改變分支。我得到以下錯誤:

Your local changes to the following files would be overwritten by checkout: Logs/Err.log

然而,當我從當前分支運行git status --s,我得到「沒有什麼承諾,工作目錄乾淨」

我搞砸了某個地方。我怎樣才能「實際」忽略那個錯誤日誌?我如何恢復到以前的非更新索引命令?

+1

你試過http://stackoverflow.com/a/17195901/1657076嗎? – venkatKA

+0

在我的搜索中沒有看到...現在應該有它,經驗教訓。 – jleach

回答

0

我不知道這是「正確」的答案,但這裏是我如何解決它(有用的是,它只是一個錯誤日誌,幾乎沒有關鍵...)

  1. 移除了的.gitignore
  2. 文件刪除文件
  3. 運行git update-index --add Logs/Err.log
  4. 提交這個分支
  5. 結賬開發和合並
  6. 返回到之前的特性分支

外貌好。我現在可以添加Err.log,它會提取更改,以便分支再次跟蹤它。我將刪除該文件,然後再次添加到.gitignore,並且一切都會好起來。

道德:

  1. 不要的東西,當你不明白究竟惹他們做什麼(update-index
  2. 不要忽視這已經被跟蹤的文件。
0

根據我自己的經驗,做git update-index --assume-unchanged只適用於你執行它的分支。它並沒有真正改變底層索引的外觀,它只是掩蓋了該分支上發生的操作。所以當你切換分支時,Git仍然「看到」髒文件。如果你想切換分支,你可以嘗試以下方法:

git stash 

git reset --hard HEAD 

當然,你首先應該撤消update-index

git update-index --no-assume-unchanged Logs/Err.log 
+0

嗯,--no-assume-unchanged ...我想知道它與--add有什麼不同...我會RTFM(因爲我應該先做...) – jleach

+0

你在回答中做了什麼感覺像對我來說是一個黑客。一般來說,如果您需要更改分支並且您的工作目錄很髒,則應該存儲,提交或重置。 –

+0

這讓我們兩個人(當你發佈你的答案時我正在處理它,否則我會按照你建議的方式完成它)。在任何情況下,該分支都會正確地合併到dev,並且現在已被刪除,因爲它不再需要。希望沒有隱藏的問題... – jleach

相關問題