Как правильно отправлять изменения, когда они конфликтуют с изменениями других пользователей в Git? - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь познакомиться с Git, имеющим только предыдущий опыт работы с SVN. Я создал пустой локальный репозиторий и вытащил туда удаленный репозиторий. Затем я изменяю свой локальный репозиторий и фиксирую это. Тем временем другой пользователь вносит и передает несвязанные изменения в тот же удаленный репозиторий.

Я пытаюсь протолкнуть свои изменения, используя git push, и вижу сообщение, которое я должен объединить, прежде чем нажать. Так что я делаю git pull, а затем git push.

В журнале на hithub.com теперь отображаются две записи. Первый из них имеет то же описание, что и то, что я ввел при фиксации локально, и те же самые изменения, которые я зафиксировал локально. Второй имеет описание

Слить ветку 'master' из [URL удаленного репо]

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

В идеале мне бы хотелось, чтобы он выглядел так же, как и в рабочем процессе SVN, - чтобы я "обновил" до последней ревизии, объединив все изменения, сделанные другим пользователем, а затем зафиксировал и отправил мои изменения.

Почему Git демонстрирует такое поведение и как мне добиться правильного поведения?

1 Ответ

3 голосов
/ 21 декабря 2011

Коммит слияния, который вы описываете, представляет состояние вашего проекта после объединения ваших изменений и изменений другого пользователя:

 [last common commit]----[other developer's commit]----[merge commit]
                     \                                /
                      \                              /
                        -------[your commit]--------

Если вам не нравится эта нелинейная структура, тогда вы можетепотяните git pull --rebase, который попытается повторно применить изменения, внесенные вашими коммитами, поверх истории вашего коллеги, оставив историю так:

 [last common commit]---[other developer's commit]----[your commit]

Лично я не против иметь коммиты слияния вистория, но мнения разные ...

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