Локальный репозиторий git несовместим с репозиторием github - PullRequest
4 голосов
/ 21 июня 2010

Я использую git для управления исходным кодом, у меня есть локальный репозиторий на моем Mac и удаленный репозиторий на github.Они ОБА предполагают, что это одно и то же.Я работаю сам, и я единственный программист, работающий над моими веб-приложениями .. Я не могу заставить git действовать правильно - с помощью SVN я мог бы просто передать код в репозиторий и BAM!В удаленном хранилище по волшебству были точно такие же файлы ... Не в git, нет, просто не может быть так просто.Я ДОЛЖЕН прочитать всю эту чертову книгу, просто чтобы использовать эту глупость.

Итак, вопрос в том, на что похож ваш цикл разработки?Я просто хочу, чтобы на github был точно такой же код, какой был в моем локальном репозитории git.Вот как я кодирую:

Я пишу код ... добавляю, редактирую, удаляю, изменяю файлы .... Итак, я делаю это в командной строке:

git add .  # this is *suppose* to add all files that are not part of the repository

git commit -m 'I commited this because...'

git push # send it to github

Теперь, посленесколько недель и сотни коммитов, github как немного другой код, который есть в моем локальном репозитории.

Пожалуйста, помогите мне исправить это, прежде чем я обменяю git & open source на windows & svn или выпрыгну из окна.

Я сожалею о тоне здесь, я просто очень расстроен, что я продолжаю находить несоответствия в моих исходных репозиториях.Это не очень хорошее чувство.Я предполагаю, что однажды я потеряю свой ноутбук, а затем в github будет старый код.Это просто кажется глупым.

О, еще одна вещь ... Я не хочу всегда делать git rm /some/long/path/to/file.txt, когда я удаляю файл.Есть ли более простой способ?Это абсолютно глупо и отнимает много времени.

Спасибо за вашу помощь.

Br

Ответы [ 4 ]

3 голосов
/ 21 июня 2010

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

Если вы хотите просто удалить файлы, а не делать другие изменения, вы можете использовать git add -u . - для получения дополнительной информации, ознакомьтесь с git-добавьте страницу man здесь: http://www.kernel.org/pub/software/scm/git/docs/git-add.html

Я начал использовать git over svn совсем недавно, и, должен признать, у меня сначала тоже были некоторые трудности при переключении.Удачи!

2 голосов
/ 21 июня 2010

На Github есть хорошая страница, подробно рассказывающая о том, как создавать, фиксировать и передавать: http://help.github.com/creating-a-repo/.

и особенно это:

Гит http://img.skitch.com/20100527-r6h2yp7m8tuxdfhppepjdsetfb.png

Вы, вероятно, хотите git push origin master (вам необходимо определить происхождение, прежде чем, конечно, прочитайте информацию выше) вместо просто git push.

Еще одна важная вещь, которую нужно знать, - это команда git commit -a, которая просто фиксирует все измененные файлы и т. Д., Не нужно git add их отдельно.

Вы также можете проверить вывод git status, чтобы увидеть, есть ли какие-то подозрительные вещи, которые могут быть причиной того, что github не является точной копией.

И к вашему сведению, svn также является открытым исходным кодом:)

1 голос
/ 21 июня 2010

Было бы полезно, если бы вы могли точно указать, чем удаленный репозиторий отличается от того, что вы ожидаете (например, что находится в вашем рабочем дереве).Единственная проблема, которую вы определили косвенно, заключается в том, что удаленный репозиторий по-прежнему содержит файлы, которые вы удалили из локального рабочего дерева .

Если «удаленные файлы все еще существуют в удаленном репозитории», это вашаЕдинственная проблема, то вы должны перейти от использования git add . к git add -A.В первом случае будут добавляться только новые файлы и изменения на этапе, сделанные в отслеживаемых файлах.Последний добавит новые файлы, внесет изменения в отслеживаемые файлы и удалит файлы, которых больше нет в рабочем дереве.Вы можете использовать --all вместо -A, если предпочитаете более мнемоническое имя опции.Использование -A / --all избавит от необходимости git rm each/deleted/file.

1 голос
/ 21 июня 2010

«git status» дает мне большой список файлов, которые я удалил в своем локальном хранилище, но все еще существует в удаленном хранилище.Это весь мой смысл.Я хочу, чтобы два хранилища были абсолютно идентичны.Как я могу это сделать ???????????????????????????????????

Если git status показывает эти файлы, вы еще не добавили их в коммит и не поместили его в главный репозиторий.Это не вина Гита, это твое.Система управления версиями, которая автоматически удаляла содержимое из основного хранилища, потому что вы удалили его в локальной рабочей копии, была бы очень опасной системой контроля версий.*http://www.kernel.org/pub/software/scm/git/docs/git-rm.html) и он добавит все эти удаления в коммит. Коммит и нажмите, и вы должны быть в курсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...