2013-05-02 123 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