2016-09-19 119 views
0

我是git的新手,目前正在嘗試各種組合來理解git。Git Hard重置單個文件混淆

我克隆我的倉庫其中有兩個文件。現在我對一個文件進行了更改(比如說「first.txt」)並將其提交到分段。

這一步後,我想重置「first.txt」對其進行遠程對應,使得沒有git的承諾與「first.txt」是存在於我的分支歷史。 現在,如果我用 -

git checkout origin/master first.txt 

這將只需更換我與遠程文件,但混帳文件提交歷史該文件是不可替代的。

如果我使用 -

git reset --hard <sha1 commit id> 

然後恢復分支特定的承諾,所有提交了幾次有丟失了。

現在我想明白的是,如果沒有通過它我們可以硬重置的文件,以便它的全部內容,並提交歷史還原到其遠程的內容和歷史上的任何方法。

感謝拿出時間來閱讀我的問題!

如果downvoting那麼請讓我知道還有什麼可能的問題得到了改善。

謝謝

+0

http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-a-specific-revision -using-git – Salailah

+0

上述鏈接中提到的方法僅用於將文件的內容恢復到特定的提交。我提到的第一條命令是同一個命令。這種方法的問題是該文件的提交歷史記錄在本地不會改變。 –

回答

3

提交表示整個存儲庫的更改。如果您想要將單個文件恢復到某個其他版本檢出,並且提交是最佳選擇。否則,你必須整個回購恢復到遠程是這樣的:

git reset --hard origin/master 
git pull origin master 
+0

但是,這將重置在其他文件中進行的所有本地提交。我們能否不僅僅從還原包括其歷史記錄中恢復單個文件? –

+0

我明白,可以從遠程檢出該文件然後提交它的方法。但是它會產生不必要的提交,現在是無效的。 –

+1

我不認爲這可能在混帳。提交是整個存儲庫的歷史記錄。你不能只恢復一個文件提交歷史記錄,不能影響其他文件。簽出一個文件遠程版本,然後提交它是最好的選擇。 –