git刪除本地倉(cāng)庫(kù)文件 git如何恢復(fù)本地刪除的文件夾?
git如何恢復(fù)本地刪除的文件夾?git checkout . #本地所有修改的。沒(méi)有的提交的,都返回到原來(lái)的狀態(tài)git stash #把所有沒(méi)有提交的修改暫存到stash里面。可用git stash
git如何恢復(fù)本地刪除的文件夾?
git checkout . #本地所有修改的。沒(méi)有的提交的,都返回到原來(lái)的狀態(tài)git stash #把所有沒(méi)有提交的修改暫存到stash里面。可用git stash pop回復(fù)。git reset --hard HASH #返回到某個(gè)節(jié)點(diǎn),不保留修改。git reset --soft HASH #返回到某個(gè)節(jié)點(diǎn)。保留修改
如何在git中刪除指定的文件和目錄?
拉取遠(yuǎn)程的Repo到本地(如果已經(jīng)在本地,可以略過(guò))
$ git clone xxxxxx
在本地倉(cāng)庫(kù)刪除文件
$ git rm 我的文件
在本地倉(cāng)庫(kù)刪除文件夾
$ git rm -r 我的文件夾/
此處-r表示遞歸所有子目錄,如果你要?jiǎng)h除的,是空的文件夾,此處可以不用帶上-r。
提交代碼
$ git commit -m"我的修改"
推送到遠(yuǎn)程倉(cāng)庫(kù)(比如GitHub)
$ git push origin xxxxxx
又不小心把.git文件夾也刪掉了,還能找回嗎?
如果只有本地一份repo,復(fù)制為新文件夾,刪除.git后重新init,這個(gè)比較easy。話說(shuō)你反正沒(méi)公開,歷史丟掉也不是很有所謂。
如果有多人協(xié)作和遠(yuǎn)程bare repo,那么這種事最好不要干了。
一定要?jiǎng)h歷史記錄的話,filter-branch也行,不過(guò)我也只有笨的辦法:git status羅列下已刪除的文件列表,全部填到 filter-branch 命令行的 rm 部分里面就是。期待有人答一份。當(dāng)然聰明的辦法的思路是有的:借助bash編程把已刪除文件名自動(dòng)羅列到命令行里。不過(guò)暫時(shí)沒(méi)條件就答不出了。
附:
可以羅列出已刪除的文件,這些就是你想要清理掉的。
方法可以是這樣:
初步確認(rèn)。不過(guò)備份好點(diǎn)。
再補(bǔ)充下:
filter-branch里面使用 git rm --ignore-unmatch 可以避免過(guò)多警告。
--prune-empty可以在一個(gè)提交的所有文件都被清空之后摘除這個(gè)提交。
同樣的,git rm a b c d/e/f/g 可以刪掉這些不同位置的文件,git rm -rf a b c d可以文件、文件夾都刪掉。
所以無(wú)論你的問(wèn)題是什么,只有一件事要做,提供一個(gè)文件名列表出來(lái),送給git filter-branch ..."git rm ..." 語(yǔ)句去做。