2013-05-02 177 views
0

我有一個Github存儲庫,我試圖將存儲庫(它已經克隆)到我的家庭計算機,但由於某些原因,它不會從Github存儲庫中提取所有文件夾。Git拉失敗

我試着抓取和拉,但結果是一樣的。

當我做拉,在更新結果下,我得到一個.pyc文件的DIRTYTREE錯誤。

這是一個簡單的python項目。

和我github上的鏈接是https://github.com/PREM1980/Test/tree/master/ecomstore/ecomstore/templates

,我試圖檢索文件夾是模板。

+0

這看起來像一個很好的帖子,關於你的問題:http://stackoverflow.com/questions/9855946/is-it-safe-to-git-pull-when-my-working-tree-and-or-index-is-dirty – sheldonk 2013-05-02 00:27:44

+0

你介意顯示完整錯誤? – 2013-05-02 00:27:48

+0

這不是一個問題。 – joshuahealy 2013-05-02 00:27:56

回答

1

當我拉,在更新的結果,我得到一個.pyc文件文件DIRTYTREE錯誤..

有你給我們的路徑下沒有pyc文件。但是我敢打賭,你實際上拉動了整個回購,而不是一些隨機的子目錄,儘管你在問題中說了什麼,因爲回購確實中有.pyc文件。

問題是,無論何時您導入.py文件,它都可以重寫.pyc文件,使您領先於主文件。一旦你以某種未被追蹤的方式領先於主人,如果你想要拉或推,你需要合併,重新綁定或以其他方式進行清理。一個好的git教程將解釋這一點。

但解決這個問題的正確方法是不檢查.pyc文件。幾乎沒有充足的理由這樣做,並有充足的理由不這樣做。

https://github.com/github/gitignore有大量.gitignore文件(如果您使用Github網站或客戶端創建新項目,甚至會自動應用相應的文件)。你會注意到Python開始於.py[cod]。你應該這樣做。

如果您不想使用.gitignore,這意味着您不能在任何地方使用-a標誌;您將不得不手動管理哪些文件處於未檢入狀態,也不要手動添加.pyc文件。

如果您有充足的理由檢查.pyc文件,您可能希望防止Python更新它們,除非您明確地選擇這樣做。換句話說,在正常的開發過程中,總是運行帶-B標誌或env變量;那麼,當您準備推送時,請刪除.pyc文件並使Python手動生成它們。

如果你真的想按照自己的方式來管理你的.pyc文件,這不是偶然的,你只是想知道如何手動合併你的出路以避免意外衝突:你也是這樣做的與其他任何衝突文件一樣。例如,stash,pull,unstash將使您有機會手動選擇一個.pyc版本或其他版本,而不會造成任何其他問題。 (你必須知道你想要哪一個......但是如果你不知道這一點,那麼你沒有充分的理由來這樣管理你的.pyc文件。)

+0

有沒有辦法只是單獨拉動ecomstore文件夾? – user1050619 2013-05-02 01:27:27

+0

@ user1050619:如果你問的是,你是否只能克隆ecomstore,而不是整個回購:你可能不應該這樣做,但後果並不可怕,並且不是太難。現在,「稀疏克隆」功能已被嵌入到'git'中。 (如果你有一箇舊版本並且不能升級,你可以找到人們想出的各種腳本,如果你是谷歌的「git稀疏克隆」)。但首先,考慮你是否真的想要這樣。爲什麼不直接製作ecomstore自己的回購? (如果您還希望它出現在較大的回購站中,那麼這就是子模塊的用途。) – abarnert 2013-05-02 19:53:51

+0

@ user1050619:另一方面,如果您問是否可以將ecomstore拉成整個回購的克隆......這就是一個更糟糕的想法。問題在於您的回購以原子方式跟蹤上游回購 - 您的整個回購協議同步到的版本不是每個文件同步到的版本。有一些技巧可以使這項工作,但是......真的,爲什麼不稀釋 - 克隆單獨的回購(或轉換現有的回購)? – abarnert 2013-05-02 19:58:25