我有一些本地更改(不在單獨的文件中,所以.gitignore不起作用),我不想提交。
我做了git reset --hard
有時在承諾清除偶然的變化但有意義之後,我也失去了我想離開的有用變化。
我如何保留我的有用更改?如何我可以存儲一些本地更改,倖存下來git reset --hard
回答
你還可以嘗試:
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
成爲完美的場景。
您可以使用git stash
臨時存儲您的更改,然後稍後再將其更改 - 請參閱Pro Git chapter on stashing。
是我知道'''git stash'''但我不想每次都隱藏我的更改。 – freemanoid
@freemanoid,好吧,讓我們假裝你想象中的'git preserve-these-and-these-changes'命令確實存在;那麼每次你想保留一些東西來保存'git reset --hard'時,你需要調用這個虛構的命令,然後調用另一個命令來「撤消」它在所選文件上設置的保存狀態。現在這將如何不同於'git stash' /'git stash pop'? – kostix
如果您不希望這些更改被提交,但始終需要它們在本地,則考慮爲您的本地更改創建並提交腳本或修補程序文件。然後,您可以保留並記錄您的更改,並在硬重置後輕鬆應用它們。
如果您有針對您的環境的更改,那麼可能需要將它們外部化爲配置文件。
- 1. git reset --hard HEAD
- 2. 「git reset --hard」與「git reset --hard HEAD」一樣嗎?
- 3. `git reset --hard`會爲我改變嗎?
- 4. 我可以使用'git -m'來更改遠程存儲庫嗎?
- 5. 如何在「git reset --hard」之後恢復更改
- 6. Git reset hard and going back
- 7. Git推後失敗'git reset --hard HEAD〜1'本地回購
- 8. 如何取消`git reset --hard HEAD〜1`?
- 9. 運行git reset --hard手動
- 10. git reset後的衝突--hard
- 11. 如何/我可以在git存儲庫中完全刪除變更集?
- 12. git reset --hard沒有幫我用rake db:migrate
- 13. Git - 恢復從本地存儲庫提交的更改
- 14. 我如何保存和如何可以存儲在鉻本地存儲陣列相關的鉻本地存儲
- 15. Git reset --hard和一個遠程倉庫
- 16. 我們可以使用HDFS來存儲git存儲庫嗎?
- 17. 「git checkout tag-name」vs「git reset --hard tag-name」
- 18. 如何查看本地存儲更改
- 19. Git如何更新本地存儲庫並保留我的更改
- 20. 使用git reset後無法推送更改--hard
- 21. 'reset hard head'和'reset hard'之間的區別是什麼?
- 22. 我有一個Git存儲庫。我克隆了存儲庫,委託我的本地更改。當我將更改推送到服務器時,它顯示錯誤
- 23. 保存一些contenteditables本地存儲 - - -
- 24. 如何使我的本地存儲庫可用於git-pull?
- 25. 如何將我的本地Git存儲庫移動到遠程Git存儲庫
- 26. 可以使用本地存儲來保存iOS上的緩存
- 27. Git:我的本地存儲庫在哪裏? (no .git directory)
- 28. 如何以低成本存儲始終如一地更改文本的版本?
- 29. git reset --hard origin/master?是什麼意思?
- 30. 如何重置「本地」git存儲庫?
謝謝,它的工作原理!我怎樣才能刪除這個標誌? – freemanoid
@freemanoid只是'git update-index --no-skip-worktree -aFile' – VonC
嗯,我沒有找到這個時候通過人看,但它在那裏。所以'git update-index --no-skip-worktree my_file'''起作用。 – freemanoid