2014-11-21 88 views
0

使用SVN,您可以刪除本地文件(將其放入垃圾箱),並通過在刪除後運行svn update來恢復它。 SVN客戶端將簡單地提取文件的新副本(並且在目錄中沒有任何其他內容)。什麼是SVN UPDATE的git等價物?

我一直沒能弄清楚GIT。

我在Windows上使用Tortoise Git,'pull'或'fetch'不能恢復文件。我不想再次檢查整個存儲庫(克隆)...

+0

如果您知道該文件名爲'restore/me',請使用'git checkout - restore/me'。如果您不知道文件的名稱,請使用'git status'來查找文件的名稱。 – torek 2014-11-21 05:24:41

+0

@torek:謝謝。它從cmd提示符運行,但不能從Tortoise Git運行。而且很煩人,我必須鍵入文件的名稱。在SVN中,如果有任何文件丟失(因爲我刪除了它們),那麼SVN UPDATE將恢復所有文件...我必須在Tortoise GIT中採取什麼等效操作? – user1884325 2014-11-21 05:32:26

+0

我不使用Tortoise Git,所以我不知道。 Git有'reset --hard',但這是非常不同的:它意味着「使索引和工作目錄都符合給定的提交,並將分支移動到那一點。」 – torek 2014-11-21 05:53:12

回答

0

您將能夠通過使用命令的組合來恢復所有已刪除的文件。顯然,這隻適用於你刪除的文件,但你還沒有刪除的文件。

有問題的命令鏈看起來是這樣的:

git checkout -- $(git diff --name-only --diff-filter=D) 

正如評論git checkout託雷克已經說明的是,恢復文件,有趣的部分發生在git diff命令的命令。
--name-only選項告訴diff只打印已更改文件的文件名,而--diff-filter=D注意刪除以外的所有文件文件被忽略。

爲了更簡單的使用,您可以創建一個別名,它也允許您在CMD中使用該命令。創建別名看起來是這樣的:

git config --global alias.restore '!git checkout -- $(git diff --name-only --diff-filter=D)' 

你將不得不在CMD使用雙引號(")。

然後,您將可以輕鬆地使用該命令與git restore

有關更多信息,請參閱git diff,checkoutconfig文檔。

0

你可以做「檢查修改」,然後你會看到已刪除文件的列表。右鍵點擊任意文件並選擇恢復