Как бороться с слиянием / вытащить в Git - PullRequest
1 голос
/ 17 мая 2011

Я должен использовать разные компьютеры.Я обновил файл A, B и другие файлы в одном, а B, C и другие файлы в другом.

Обновления в файле B являются другой частью кода.Я совершил в обоих.Я толкнул A и B в GitHub.

Вопросы:

  • Что мне теперь делать в другом?

  • Стоит ли просто тянуть?Или мне сначала нажать?

  • Если я нажму, будет ли файл A перезаписан?

  • Если я нажму, файл C будет перезаписан?

  • Какой процесс мне нужно выполнить?

  • Что мне нужно сделать с файлом B, который имеет другую версию?Могу ли я объединить их?

Ответы [ 3 ]

2 голосов
/ 17 мая 2011

Вы должны сначала вытащить, чтобы ваши добавления были поверх того, что находится на сервере. После того, как вы потянули (что объединит ранее вставленные моды с вашими местными модами), вы можете нажать. Кстати: это не GitHub, это просто мерзавец. Я предлагаю следующую книгу, чтобы понять работу git:

http://book.git -scm.com /

1 голос
/ 17 мая 2011
0 голосов
/ 17 мая 2011

Обычный сценарий состоит в том, что вы делаете подтягивание, прежде чем вы вносите изменения.Но может случиться так, что текущий предок ваших коммитов такой же, так как вы извлекли в последний раз (то есть все остальные еще ничего не выдвинули), что означает, что слияние не требуется, и вы можете просто проталкивать свои изменения без необходимоститянуть.

После того, как кто-то еще поместил свои изменения между ними, вы всегда должны тянуть свои изменения в свои (это где git создает то, что называется коммитом слияния, то есть коммит, который не имеетбыл создан обычным способом с помощью git add, git commit и т. д.).Теперь ваш репозиторий синхронизирован с последними изменениями, и вы можете спокойно нажать, чтобы синхронизировать центральный репозиторий с вашим.

В этом случае вы должны сначала извлечь, что означает, что C не будет перезаписан, так как оба репозитория имеютта же версия (помните, что вы изменили только B в обоих репо).

В случае B, когда у вас есть две расходящиеся версии, которые должны быть объединены с помощью git, могут возникнуть конфликты.Но это именно то, что является извлечением, это выборка (для синхронизации ваших репозиториев) и слияние между вашей локальной ветвью, которая отслеживает удаленную ветвь, например, master объединяется с origin / master.

И, наконец,то же самое произойдет и с A, изменения, внесенные в первом репо в A, будут тривиальным слиянием с A в другом репозитории, поскольку модифицированный A модифицирован из той же версии (идентичных BLOB-объектов) A в другом репо.

Надеюсь, это прояснило некоторые вещи.

Ура!

...