使用SVN,您可以刪除本地文件(將其放入垃圾箱),並通過在刪除後運行svn update來恢復它。 SVN客戶端將簡單地提取文件的新副本(並且在目錄中沒有任何其他內容)。什麼是SVN UPDATE的git等價物?
我一直沒能弄清楚GIT。
我在Windows上使用Tortoise Git,'pull'或'fetch'不能恢復文件。我不想再次檢查整個存儲庫(克隆)...
使用SVN,您可以刪除本地文件(將其放入垃圾箱),並通過在刪除後運行svn update來恢復它。 SVN客戶端將簡單地提取文件的新副本(並且在目錄中沒有任何其他內容)。什麼是SVN UPDATE的git等價物?
我一直沒能弄清楚GIT。
我在Windows上使用Tortoise Git,'pull'或'fetch'不能恢復文件。我不想再次檢查整個存儲庫(克隆)...
您將能夠通過使用命令的組合來恢復所有已刪除的文件。顯然,這隻適用於你刪除的文件,但你還沒有刪除的文件。
有問題的命令鏈看起來是這樣的:
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
。
你可以做「檢查修改」,然後你會看到已刪除文件的列表。右鍵點擊任意文件並選擇恢復
如果您知道該文件名爲'restore/me',請使用'git checkout - restore/me'。如果您不知道文件的名稱,請使用'git status'來查找文件的名稱。 – torek 2014-11-21 05:24:41
@torek:謝謝。它從cmd提示符運行,但不能從Tortoise Git運行。而且很煩人,我必須鍵入文件的名稱。在SVN中,如果有任何文件丟失(因爲我刪除了它們),那麼SVN UPDATE將恢復所有文件...我必須在Tortoise GIT中採取什麼等效操作? – user1884325 2014-11-21 05:32:26
我不使用Tortoise Git,所以我不知道。 Git有'reset --hard',但這是非常不同的:它意味着「使索引和工作目錄都符合給定的提交,並將分支移動到那一點。」 – torek 2014-11-21 05:53:12