2013-06-02 24 views

回答

3

你還可以嘗試:

git update-index --skip-worktree -- file 
# to cancel it: 
git update-index --no-skip-worktree -- file 

應該抵制git reset --hard。 (請參閱this answer'--'雙連字符使用)
請參閱此blog post

  • 它看起來像skip-worktree是拼命的保護您的本地數據。但是,如果它是安全的,它並不妨礙你獲得上游的變化。加上git不會重置拉標誌。但是忽略「重置 - 硬」命令對於開發者來說可能會是一個令人討厭的驚喜。
  • assume-unchanged在pull操作中標誌可能會丟失,並且這些文件中的局部更改似乎對git並不重要。
    假設 - 不變假定開發人員不應更改文件。如果一個文件被改變 - 比這個改變並不重要。此標誌旨在提高不變文件夾(如SDK)的性能。但如果諾言被破壞並且文件實際上發生了變化,那麼git會回覆標誌以反映現實。可能在通常不需要更改的文件夾中有一些不一致的標誌是可以的。

另一方面,當您指示git不觸摸特定文件時,skip-worktree很有用。這對於已經跟蹤的配置文件很有用。上游主存儲庫託管一些生產就緒配置,但您想要更改配置中的某些設置以便能夠執行一些本地測試。並且您不希望意外檢查此文件中的更改以影響生產配置。在這種情況下,skip-worktree成爲完美的場景。

+0

謝謝,它的工作原理!我怎樣才能刪除這個標誌? – freemanoid

+1

@freemanoid只是'git update-index --no-skip-worktree -aFile' – VonC

+0

嗯,我沒有找到這個時候通過人看,但它在那裏。所以'git update-index --no-skip-worktree my_file'''起作用。 – freemanoid

5

您可以使用git stash臨時存儲您的更改,然後稍後再將其更改 - 請參閱Pro Git chapter on stashing

+0

是我知道'''git stash'''但我不想每次都隱藏我的更改。 – freemanoid

+3

@freemanoid,好吧,讓我們假裝你想象中的'git preserve-these-and-these-changes'命令確實存在;那麼每次你想保留一些東西來保存'git reset --hard'時,你需要調用這個虛構的命令,然後調用另一個命令來「撤消」它在所選文件上設置的保存狀態。現在這將如何不同於'git stash' /'git stash pop'? – kostix

1

如果您不希望這些更改被提交,但始終需要它們在本地,則考慮爲您的本地更改創建並提交腳本或修補程序文件。然後,您可以保留並記錄您的更改,並在硬重置後輕鬆應用它們。

如果您有針對您的環境的更改,那麼可能需要將它們外部化爲配置文件。

相關問題