2012-05-21 149 views
1

我有一個git倉庫,其中有一個目錄充滿了用戶上傳的文件。該目錄還包含一個.gitignore */被忽略的GIT文件在刪除時被刪除

我做了一個從遠程回購拉和目錄中的所有這些文件被刪除沒有警告。

什麼可能導致這種情況發生?

我所做的所有研究告訴我,這是一個故意的行爲,要刪除所有這些文件,並且不可能偶然發生。這是真的還是有另一個git命令,會默默刪除所有這些文件?

+0

大概有人在提交中將它們從回購庫中刪除。 –

+0

他們被忽略的文件,他們不在遠程倉庫 – nathanjosiah

+0

你是否確定*拉操作是刪除這些文件的東西? –

回答

2

.gitignore是一種方便的功能,可以使狀態報告不會顯示噪音,也可以通過git add .等自動添加,就是這樣。你可以明確地添加一個被忽略的文件,然後git會關心那個特定的文件,並且在.gitignore中命名一個文件不會讓git停止關注已經被跟蹤的文件。

如果git pull被刪除的文件,那麼這些文件被跟蹤和刪除。您可以通過git checkout "@{may 21 17:30 pdt}"或某些此類引用將它們還原爲您的簽出提交。

這是遠程可能的,有人添加文件,沒有提交更改,並強制合併,使孤兒難以找到,但除非有人明確地抹掉git的內存git fsck --lost-found就像舊的undelete程序,它會刪除您曾經關心的所有內容的副本,但後來丟棄到.git/lost-found

git ls-files -ic --exclude-standard將向您顯示符合忽略規範的文件,即某些人可能添加或忽略的文件。想想看,這可能不是一個預先提交的掛鉤線,

git ls-files -ic --exclude-standard \ 
| sed '${p;s,.*,*** '"$0"' refusing commit with tracked files marked as ignored in the standard excludes lists,;q1}' 
+1

沒有任何文件被跟蹤,因爲它們都是用戶上傳的。在repo的任何提交中沒有它們的副本,並且'.git/lost-found'目錄不存在。 – nathanjosiah

+1

然後git pull沒有刪除它們。 – jthill

+0

什麼命令會刪除它們呢?我試圖弄清楚這一點,因爲我只是繼承了這個沒有正確設置東西的服務器。我去把遠程回購的變化拖到服務器上,所有的用戶上傳都不見了。 – nathanjosiah

相關問題