2014-06-19 136 views
1

在使用git時,我傾向於使用大量「高級」功能在推送到遠程設備之前重寫和重新組織本地歷史記錄。我經常用來改變當前分支指向的提交的命令是git reset --hard <commit>。不幸的是,這個命令在你的本地目錄中有未提交的更改運行時會有一些潛在的不良影響。由於這個功能,我失去了工作(雖然通常不多,但往往會經常犯)。移動分支指針比`git reset --hard`更安全嗎?

是否有替代git reset --hard更改提交我的當前分支指向,當我有我的工作目錄中未提交的更改不會導致數據丟失? (理想情況下,我希望像git checkout這改變了我當前分支指針而不是改變HEAD的。)

回答

2

爲什麼你會尋找一些git checkout,當你可以只使用git checkout

你正在尋找的選項是-B,它檢出指定的ref並從中創建一個新的分支,或更新現有的分支。即使你指定了你已經在的分支,它也可以工作。

+0

Git的v1.7.3版本說明 ... 「混帳結賬-B 」 是說 「混帳分支-f 」 其次是 「混帳結賬」 –

+0

@UweGeuder無論是發行說明一個較短的方式不完整的,那麼,或者在稍後的版本中放鬆。如果你在分支'master'上,'git branch -f master'是一個錯誤(「致命的:不能強制更新當前分支」),但是'git checkout -B master '確實有效。我已經用Git 1.9.4測試過了。 – hvd

+0

這幾乎是完美的。我沒有意識到'git checkout'的選項。現在我只需要編寫一個處理「當前分支」填充的別名,所以我不必每次都輸入它。謝謝你的幫助。 ;-) – Ajedi32

1

這些將保留更改

git reset --soft 

git reset --mixed 

做其中的一個後,您可以使用git diff來評估,如果你想扔的變化了。

+0

問題在於,它不僅保留了我的工作目錄中的更改,還保留了分支本身的更改。我肯定希望分支上的更改重置,這就是爲什麼我首先移動分支指針。 – Ajedi32

相關問題