[英]Pushing local repo to remote does not push submodule files using GIT
[英]Git: Recovery of files possible after local remove before push?
我想通過刪除每個 JPG 文件在推送之前“清理”我的 git repo,所以我輸入:
find . | xargs rm *.png
在 git root 中,現在一切都已刪除。 我的 *.py 文件也被刪除了,但我不知道為什么? 它是一台 Linux 和 Ubuntu 機器。 有機會恢復我的文件嗎? 也許在我的操作系統上?
您輸入的命令完全錯誤:
find .
此命令輸出下面的每個文件和目錄的名稱.
,包括隱藏文件。
xargs
這個命令接受它的輸入並運行作為參數給出的命令,一次輸入一行作為參數。 因此,它將運行rm *.png <line1_from_find>
,然后rm *.png <line2_from_find>
等。
沒有像停止錯誤這樣的保護措施,所以如果你讓命令完全運行,它會取消所有文件的鏈接,你知道有一個空的目錄樹。 git
不會幫助你,因為它的工作原理是將元數據和當前狀態存儲在工作目錄根目錄下的.git
目錄中。 您剛剛刪除了其中的所有文件。
所以不,除非您手動或通過將狀態推送到其他地方進行復制,否則它可能已經消失,但請參見下文。 為了將來參考,以下是銷毀所有以 png 結尾的文件的正確命令:
find . -name '*.png' -delete
如果您的目錄以.png
結尾,則可以在-delete
之前添加-type f
以將其過濾掉。
git
將其某些內部狀態標記為只讀,如果您沒有使用rm -f
並且您可能能夠從中恢復一些數據,則rm
尊重它。
轉到工作目錄根目錄下的.git
目錄。
它將包含一個objects
目錄,一些文件可能在那里幸存下來。
這些文件是原始壓縮流,您可以使用該命令查看其內容:
zlib-flate -uncompress <path_to_the_file
(zlib-flate 命令來自 ubuntu 上的 qpdf 包)
對我來說,以下工作:
$ git checkout -- name_of_deleted_directory
或者
$ git checkout -- path_to_local_delected_directory
就我而言,我錯誤地刪除了一個目錄,我沒有更改該目錄中的任何代碼,但是我更改了 git repo 的其他目錄中的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.