回答
這裏有兩種「破壞性的」 - 對你的git歷史和命令的破壞性的命令,可以放棄工作副本中的更改。
命令是放棄工作樹改變:
git reset
git checkout
正如其他人所提到的,引用日誌和事實Git對象,切勿立即的組合被丟棄(除非你打開自動清理)意味着你通常可以撤銷像git reset/rebase/merge
這樣的操作。
這些命令,雖然,實際上丟棄GIT中對象,消除撤消能力:
git gc
(默認情況下,該修剪是至少2周老不可獲得的對象)
在我看來,破壞性最大的git命令就是那些丟棄工作樹的命令。使用'git stash'進行「備份」應該總是安全的;混帳藏匿流行'。您可以稍後(直到您的gc修剪限制)通過以下命令恢復「丟失」版本:gitk --all -n 5000 --all $(git fsck | awk'/ dangling commit/{print $ 3}'; git log -g --pretty ='format:%H')[這會打開gitk前端,最多包含5000次提交,包括所有「丟失」提交]。 – 2011-09-06 07:26:31
根據http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/
$ git checkout foo.c
...將覆蓋您可能需要foo.c的任何本地修改,而不問。
確實如此 - 它比我想象的更具破壞性。我只是做了一個'git checkout 6bb33a8。'希望得到那個提交中改變的那個文件,但是它也消除了我對其他文件的階段性更改,用它們中的內容替換它們。我認爲它可能會在reflog中保留一些東西來保護我,但沒有這樣的運氣。 – 2016-04-12 18:41:54
使用git reset
命令可能會丟失未提交的更改。如果您的更改已提交,則在受到清除gc
清除之前,您將受到reflog多天的保護。
例如,如果你checkout
,rebase
,reset
,或merge
所有引進的變化,你可以回到以前的通過運行reflog
命令,並使用reset
重置你的頭一個老犯犯。
- 1. 什麼是java中的破壞性和非破壞性方法?
- 2. 破壞性的Git提交?
- 3. 什麼是破壞性更新?
- 4. 爲什麼ListAppend是非破壞性的,而ArrayAppend和StructInsert都具有破壞性?
- 5. WPF命令綁定破壞
- 6. tar命令:什麼是破折號?
- 7. 「git add」的相反命令是什麼?
- 8. 破壞性git操作對github分叉有什麼影響?
- 9. Cookie破壞會話破壞,爲什麼?
- 10. git中的「git team-fetch」命令是做什麼的?
- 11. 爲什麼此行編號命令會破壞字符編碼?
- 12. Javascript中破壞性與非破壞性方法的命名約定
- 13. 是CALayer insertSublayer:atindex:破壞性的?
- 14. 爲什麼git沒有'git ignore'命令?
- 15. let命令的侷限性是什麼?
- 16. 什麼是lisp的非破壞性版本?
- 17. 爲什麼UIPreviewActionStyle破壞性標題不是紅色的?
- 18. 什麼是導致包裝破壞?
- 19. 什麼是破壞進程內存?
- 20. 命令C++全局變量破壞?
- 21. 如何回聲$命令不會破壞
- 22. 'git add。'的SourceTree GUI中的等效命令是什麼?
- 23. 使用雙破折號的Git命令
- 24. git命令中的<pathspec>是什麼?
- 25. git流中的支持命令是什麼
- 26. git推拉命令中的「上游」是什麼
- 27. 究竟是什麼意思的commit命令在Git中
- 28. 命令git中「develop」和「origin/develop」的區別是什麼
- 29. 是bash getopts函數對命令行選項的破壞嗎?
- 30. 歸併 - 破壞性與非破壞性Java中
當你回答下面的問題時,請記住解釋命令的作用! – 2010-04-28 14:51:51