2015-05-22 17 views
0

我已經運行以下命令:回到<sha1><directory>

git checkout <commit-hash> some_directory 

master,並希望返回到清潔狀態master在面前。我最初的想法是,

git checkout master 

會做的伎倆,但無濟於事,因爲有些文件在分支上顯示爲「新」。

+0

你能詳細說明爲什麼它不起作用嗎?你遇到了什麼錯誤? – Mureinik

回答

1

當喲運行git checkout <commit-hash> some_directory的文件顯示爲增加。你可以用git status看到:

$ git status 
On branch test 
Changes to be committed: 
[...] 

當你在這種狀態下,你必須做到:

git reset 

到unstage這種變化,並且:

git checkout . 

恢復是什麼在您的HEAD

git reset --hard在一個命令中基本相同。

0

!在你開始修復它之前,先複製你的完整目錄;)特別是如果你沒有遠程和本地回購是你唯一的回購。

你需要git reset(或者git reset --hard)。

其他的方式可以是:切換到一些什麼分支,刪除主 git branch -D master ,然後重新創建它 git checkout -b master origin/master

1

下面的答案假定您沒有新的更改,您希望與來自錯誤簽出的意外更改混在一起。

Unstage從收銀臺與

git reset master some_directory 

git reset HEAD some_directory 

的變化將文件放在你的工作樹回到其先前的狀態

git checkout HEAD some_directory 

最後,清理在主人最近提交的

01中可能已刪除的任何文件
git ls-files -z --others some_directory | xargs -0 rm 

如果你有絕對的把握要回到主原樣,不介意失去可能存在的任何更改(無論是在some_directory或其他地方),跳過所有上述及運行

git reset --hard master 
相關問題