2017-07-19 60 views
0

我已經從遠程分支簽出並修改了一些文件。但是我不想在下一次提交中添加它們,因爲它們僅適用於本地配置;實際上,我總是希望他們不被承諾。出於這個原因,我在這些文件上應用了git update-index --assume-unchanged。不過,現在我已經從這些文件從我本地的不同分支檢查出的問題: enter image description here如何檢查本地'假設不變'文件的git分支?

如果我點擊「智能結帳」(這是我所需要的),它拋出一個錯誤:「Couldn」 t檢出原產地/主人:您對本地文件的更改將被結帳覆蓋:「 即使我點擊」Force Checkout「,它也會拋出:」無法簽出origin/master:Entry'.gitignore'not uptodate無法合併。「

那麼如何從其他分支辦理退房手續,同時保留本地變更?

+1

至於.gitignore,您可以添加本地忽略模式到.git/info/exclude,並保持項目中的一個不變 – max630

+1

,順便說一句,您需要的是[skip-worktree](https://stackoverflow.com/a/13631525/2303202) – max630

+0

看起來像skip-worktree是我最初尋找的東西。請考慮做出答案,以便我可以接受它。 – arslancharyev31

回答

2

正因爲這個原因,我總是將人們從assume-unchanged轉移開。你最好的選擇是找到一種不同的方式來保持你的改變。

從您的錯誤消息看來,.gitignore文件是有問題的文件之一。非共享/本地忽略規則不屬於.gitignore;他們屬於.git/info/exclude

其他情況可能需要單獨處理。常見的情況是本地配置文件。一個典型的解決方案是僅對源代碼進行控制,期望開發人員在本地創建實際配置文件(在忽略或在回購工作樹之外的路徑上)。

如果你有本地/非共享的代碼版本,我會首先回顧一下原因。如果有必要,那麼最好的解決方案可能是使用構建過程,讓您在工作樹之外交換代碼。

底線是,如果你告訴git跟蹤文件的路徑,它會試圖做到這一點。

+0

我對所有這些儀式感到困擾的原因是,我只是想向各種GitHub存儲庫發送修正錯誤的請求,而無需進行任何其他修改(如本例中的build.gradle文件)。那麼有沒有更方便的方法來做到這一點? – arslancharyev31

+1

我想我會這樣做,通過使我想要在上游的分支上分享錯誤修正(大概簽出一個單獨的工作樹),然後我將合併回自己的工作線。 –

相關問題