2012-07-23 38 views
2

我有混帳 我的問題是下面一個問題,當我做一拉:爲什麼不能恢復我從我的工作目錄中刪除的文件?

git pull origin example 

直到有完美的!,然後我做一個

rm -Rf rootdirectory 

然後

git commit -am "Delete files" 

然後再次拉我,因爲我需要這個文件

git pull origin example 

但沒有得到再次rootdirectory

這是一個消息:

Already up-to-date. 

我怎樣才能做得到使用Git文件再次拉?

+0

我不明白這個問題,真的 - 你刪除了這些文件,並承諾這個改變。你爲什麼期望拉回來一個不同的結果? =) – 2012-07-23 14:05:56

+0

我以git開頭,但如果我刪除了文件,然後在本地存儲庫中進行了提交,直到我沒有執行推拉操作,tods應該爲我提供遠程分支文件。這是如此嗎? – Marcelo 2012-07-23 14:14:32

+0

@MarceloPrueba絕對不是;-)查看我的回答 – Christoph 2012-07-23 14:15:11

回答

7

原因git的拉動不會改變任何東西是,你不拉數據從遠程倉庫,你是拉改變。而且git沒有變化!

Git不是數據存儲。這是一個版本控制系統

但是,如果你想結賬以前的狀態,你可以很容易地做到這一點:

git checkout HEAD~1 

這意味着你之前被重置你的工作拷貝到以前的狀態最新的提交。

但是,如果你想徹底刪除提交該刪除的文件,你可以這樣做,以及:

git reset --hard HEAD~1 
3

難道我就在想,你已經習慣了顛覆,在那裏,如果你刪除了這些文件,然後做了svn update,這些文件會重新填充?我也是。

在git中,您必須執行git checkout才能將文件帶出回購站。您還可以使用git reset --hard更新文件,但這樣做會消除工作目錄中的任何更改。

+0

謝謝萊斯特!,我不會用svn! – Marcelo 2012-07-23 14:29:52

+0

我也想使用SVN! Git不是用戶友好的。人們在複雜的事物中看到花哨的東西,不管它是否帶來了價值。但真正的挑戰是讓事情變得簡單,否則。 – pongapundit 2017-04-17 18:38:48

1

這是git的工作方式。拉origin/example並提交您的更改(「刪除文件」)本地回購是提前origin/master由1後承諾:

A---B---C origin/master 
     \ 
      D master 

哪裏D是你Delete files提交。另一個git pull爲您提供Already up-to-date,因爲origin/master上沒有新的提交可能會被拖入您的本地回購。

要「再次獲取文件」,您可以撤消最後一次提交:

git checkout HEAD~1 

或者你可以重置本地資源庫相匹配的遠程倉庫:

git reset --hard origin/master 
1

圍棋到文件被刪除的目錄,確保你在你想要的分支上並輸入「git checkout」。這將帶回您在當前分支上刪除的文件。

相關問題