2014-06-14 18 views
-1

在HEAD版本中,我有一個錯誤,當我在master分支上時,會拉另一個分支,以致一些新文件或目錄已被合併到另一個分支的主分支中。我意識到這是一個非常大的錯誤。所以我使用「git reset xxx」來恢復到xxx提交版本。但是,在完成命令後,我真的回到了xxx提交版本,這些新文件或目錄也在那裏。這個動作有什麼問題?我是否採取了錯誤的命令?我只想回到一個乾淨的舊的提交版本,沒有任何錯誤的拉動作的變化。謝謝!在Windows上的「git reset xxx」命令不會執行與linux相同的操作?

+0

的可能重複(http://stackoverflow.com/questions/2389361/undo-a-git-合併) – Joe

+0

對不起,但它不能解決我的困惑。 – xohozu

回答

0

要回到舊的承諾,放棄所有更改:

git reset --hard commit-id 

沒有--hard開關,你正在做一個混合復位這意味着變化將仍然在你的工作集被保留。 --hard開關也擺脫了這些。

如果你還想再刪除任何未跟蹤文件:[?撤消一個Git合併]

git clean -f 
+0

「git clean -f -d」很好,謝謝。更重要的是,爲什麼我在窗口上使用「git reset xxx --hard」,在HEAD版本中跟蹤的新文件或目錄在xxx版本中變成未跟蹤狀態? – xohozu

+0

@xohozu因爲正確的語法是'git reset --hard xxx',而不是'git reset xxx --hard'。 – VonC

+0

@VonC'git reset --hard xxx'和'git reset xxx --hard'沒有區別。一般來說,Git允許命令行選項顯示在參數之前或之後。你看到不同的行爲? – jszakmeister

0

你應該使用:

git reset --hard xxxx 

這將重置工作樹太,除了指數。

http://git-scm.com/images/reset/reset-hard.png

(摘自「Reset Demystified」)

重置索引唯一不會擺脫做你的工作樹局部修改。

相關問題