2013-05-02 6 views
0

У меня есть репозиторий Github, и я пытаюсь вытащить репозиторий (он уже клонирован) на мою домашнюю машину, но по какой-то причине он не вытаскивает все папки из репозитория Github.Ошибка Git Pull

Я попробовал и выборку, и результат, но результат такой же.

Когда я делаю pull, в разделе «Обновить результат» я получаю ошибку DIRTYTREE в файле .pyc.

Это простой проект 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

+0

Не могли бы вы показать полный ошибка? –

+0

Это не вопрос. – joshuahealy

ответ

1

Когда я тянуть под результате обновления, я получаю ошибку DIRTYTREE на .pyc файл ..

Там нет .pyc файлов в пути, который вы дали нам. Но я готов поспорить, что вы на самом деле тянете все репо, а не какой-то случайный подкаталог под ним, несмотря на то, что вы говорите в вопросе, потому что у этого репо есть. В нем есть .pyc-файлы.

Проблема в том, что всякий раз, когда вы импортируете файл .py, он может переписать файл .pyc, заставив вас опередить мастера. Как только вы опережаете мастера каким-то образом, который не отслеживается, вам нужно будет объединить, переустановить или иным образом очистить вещи, если вы хотите тянуть или нажимать. Это объяснит хороший учебник git.

Но правильный способ решить это - просто не проверять файлы .pyc. Практически никогда не было веских оснований для этого, и было много веских причин.

Существует отличная коллекция файлов .gitignore по адресу https://github.com/github/gitignore (и соответствующий будет применен автоматически, если вы используете сайт или клиент Github для создания нового проекта). Вы заметите, что Python начинается с .py[cod]. Вы должны сделать то же самое.

Если вы не хотите использовать .gitignore, это означает, что вы не можете использовать флаг -a в любом месте; вам придется вручную управлять файлами и не проверять их, а вручную не добавлять файлы .pyc.

Если у вас есть веская причина для проверки файлов .pyc, вы, вероятно, хотите, чтобы Python не обновлял их, кроме случаев, когда вы решите сделать это явно. Другими словами, во время нормальной разработки всегда выполняйте флаг -B или PYTHONDONTWRITEBYTECODE env; затем, когда вы готовы нажать, удалите файлы .pyc и сделайте Python сгенерируйте их вручную.

Если вы действительно хотите управлять своими файлами .pyc так, как вы это делаете, и это не случайно, и вы просто хотите знать, как вручную объединить свой путь из неожиданного конфликта: вы делаете то же самое как с любыми другими конфликтующими файлами. Например, stash, pull, unstash даст вам возможность вручную выбрать одну .pyc-версию или другую, не прикручивая что-нибудь еще. (Вы должны знать, какой из них вы хотите ... но если вы этого не знаете, у вас нет веских оснований для управления вашими файлами .pyc таким образом.)

+0

Есть ли способ просто вытащить папку ecomstore? – user1050619

+0

@ user1050619: Если вы спрашиваете, можете ли вы только клонировать ecomstore в первую очередь, а не весь репо: вы, вероятно, не должны этого делать, но последствия не ужасны, и это не слишком сложно. В настоящее время функциональность «разреженного клонирования» встроена в 'git'. (Если у вас установлена ​​более старая версия и вы не можете ее обновить, вы можете найти различные сценарии, которые люди придумали, если вы google для «git sparse clone».) Но сначала подумайте, действительно ли вы этого хотите. Почему бы просто не сделать ecomstore своим собственным репо? (Если вы также хотите, чтобы он появился в более крупном репо, для этого нужны подмодули.) – abarnert

+0

@ user1050619: Если, с другой стороны, вы спрашиваете, можете ли вы вытащить только ecomstore в клон всего репо? гораздо более плохая идея. Проблема заключается в том, что ваше репо отслеживает восходящее репо атомарно - есть ревизия, на которую синхронизируется весь ваш репо, а не ревизия, к которой синхронизирован каждый файл. Есть трюки, которые могут сделать эту работу, но ... действительно, почему бы не просто разрезать клонирование отдельного репо (или конвертировать существующий)? – abarnert