Использование git между двумя разными машинами и github - PullRequest
0 голосов
/ 09 февраля 2011

В последнее время, если я сделаю:
1. git push origin master (на моем ноутбуке)
2. git pull origin master (на моем Mac)
3. git status (на моем Mac)

Я вижу, что "ваша ветвь опережает" источник / хозяина "на 6 коммитов". Поскольку я не делал никаких коммитов на Mac, похоже, это ошибка; или что-то, чего я не совсем понимаю.

Если я тогда сделаю:
4. git push origin master (на моем Mac)

Сообщение об исходном / главном сообщении исчезает.

Обратите внимание, что на вышеуказанных шагах я не делал коммитов / изменений на Mac между шагами 1 и 2.

Это происходит все время в данный момент - я должен волноваться, или есть разумное объяснение?

Ответы [ 2 ]

8 голосов
/ 09 февраля 2011

Хватит печатать git pull origin master. Это дает команду git перенести содержимое главной ветки исходного репозитория в вашу локальную ветку, полностью обходя ветку удаленного отслеживания. Вместо этого вы должны просто набрать git pull. Это извлечет ветку, установленную в branch.master.merge (при условии, что «master» извлечен) из удаленного репозитория, и использует ее для обновления ветки удаленного отслеживания, а затем объединит ветку удаленного отслеживания с вашей локальной ветвью. 1004 *

Чтобы выяснить, как это работает, git pull <args> запускает git fetch <args>, а затем использует git-merge для объединения выбранных веток (веток) с текущей веткой. Если вы укажете git fetch, git получит удаленный по умолчанию ветвь и обновит ветви удаленного отслеживания, после чего git-pull объединится в правильную ветку. Но если вы укажете git fetch origin master, git извлечет основную ветку исходного репо и сохранит ее в FETCH_HEAD без обновления веток удаленного отслеживания. Вы можете проверить это самостоятельно, набрав git fetch origin master (при условии, что у вас нет удаленных коммитов). Конечным результатом выборки должна быть строка типа

 * branch            master     -> FETCH_HEAD

Это говорит о том, что удаленная ветка "master" была выбрана и сохранена в FETCH_HEAD. С другой стороны, если вы просто наберете git fetch origin, вы должны увидеть что-то похожее на

 * branch            master     -> origin/master

Это говорит о том, что удаленная ветвь "master" была выбрана и сохранена в локальной ветке удаленного отслеживания "origin / master".

0 голосов
/ 11 апреля 2012

Просто используйте git push , но перед настройкой

git config - глобальное сопоставление push.default / upstream

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