2016-11-21 75 views
1

我試圖總結我的周圍不同的Git方法頭(還原,開關/ Chekout,復位)Git SOFT重置的用例是什麼?

爲什麼我會想要做一個混合或軟reset? 我是一個VC新手,所以也許我錯過了一些東西。 我認爲上述的重點是要改變我的本地文件到其他版本(從Git回購)

+1

已經在http://stackoverflow.com/q/5203535/6309 – VonC

+1

中回答了(對於「軟」部分)你的意思是一個混合或軟復位,不是嗎? – rodrigo

+0

沒有「軟回覆」這樣的東西。這個術語是特定於Git的(Mercurial例如使用不同的單詞「回覆」,例如),但在Git中,* revert *意味着或多或少地「創建一個* new * commit來從* previous * commit中撤銷某些東西」 。你正在尋找*重置*,這是一個非常複雜的命令(我有時會爭辯說它應該至少有兩三個獨立的命令,而不是一個大的「重置」)。 – torek

回答

0

我有我的.gitconfig這些別名。

# Undo the last commit, but leave it in the working copy 
redo = reset --soft HEAD^ 

# Throw out all work up to the last commit 
clear = reset --hard HEAD 

# Undo the last commit 
undo = reset --hard HEAD^ 

正如你所看到的,我用reset --soft HEAD^如果我想要做的最後一次提交了過來。在他們的例子中,git-reset docs也提到了這個用例。這與git commit --amend之間有重疊。

0

用例用於那些想要重置索引但不想更改任何工作文件的時間。例如,假設您已對文件foo進行了3次更改並完成了git add foo。然後你意識到你不想承諾所有三個變化,但你只想提交其中之一。所以你做一個git reset然後git add --patch foo來選擇你想要提交的塊。