Ветвь слияния 'master' из https://github.com/... в сообщении фиксации - PullRequest
0 голосов
/ 11 сентября 2018

Мы два инженера, работающие над одним репозиторием на github. Другой человек создает филиал на этом репо и подает PR

Ниже приведены шаги, выполненные

  • Я делаю изменения локально и напрямую фиксирую репо.
  • В последний раз после слияния PR и внесения последних изменений в мое локальное репо
  • когда я зафиксировал новые изменения, я увидел, что у github есть странное сообщение

Слияние ветки 'master' из https://github.com/userNaame/projectName

, пожалуйста, уточните, если я сделал что-то не так, и как избежать такого сообщения коммита?

1 Ответ

0 голосов
/ 11 сентября 2018

Команда git pull, которую использовал хотя бы один из вас двоих, запускает для вас две другие команды Git. (Я буду ссылаться здесь на «вы», но это может быть другой инженер, или вы двое можете по очереди. Думайте о «вы», как о «вы все» или «вас обоих», хотя только один из вас запускает каждую команду за раз.)

Первая команда, которую git pull запускает для вас, всегда git fetch. Это получает коммиты из другого репозитория Git. В частности, он использует имя хранилища, которое вы называете - или origin по умолчанию, - чтобы найти коммиты, которые у вас есть, которых у вас нет, предположительно потому, что эти коммиты были добавлены в их репозиторий после того, как вы запустили git clone. Git помещает эти коммиты в вашу копию хранилища, так что теперь они у вас есть.

Команда second , которую запускает git pull, обычно git merge (вы можете настроить ее для запуска другой второй команды, но, очевидно, вы этого не сделали). Когда git pull запускает git merge, он предоставляет, как сообщение журнала коммита слияния :

Merge branch '<name>' of <url>

Часть <name> - это название ветви, которую git pull сказал git fetch получить от другого Git. Часть <url> - это URL, который git pull велел git fetch связаться, чтобы получить коммиты, найденные по имени <name>. Так что если в вашей ветви origin/master установлено как upstream , ваш git pull попросит ваш Git вызвать Git на origin и получить любые новые коммиты от этого 10-го Git master. Затем ваш git pull имеет ваш Git merge этих коммитов с сообщением Merge branch 'master' of ....

На данный момент у вас есть их (других Git) коммитов и ваших собственных коммитов, плюс коммит слияния , связывающий ваши два набора коммитов вместе , Предполагая, что вы используете свой собственный master, это выглядит примерно так:

          ●--●--●
         /       \
...--o--o         ●   <-- master (HEAD)
         \       /
          o-----o   <-- origin/master

Ваши коммиты - те, которые вы сделали сами - находятся в верхнем ряду; общие коммиты находятся в левом среднем ряду; и их коммиты - те, что они сделали после того, как вы клонировали - находятся вдоль нижнего ряда. Самый правый коммит - это новый коммит слияния, который вы только что сделали. Я пометил коммиты, которые у вас , которые они не имеют, как сплошные черные круги .

Теперь вы запускаете git push origin master, чтобы отправить свои новые коммиты в Git по адресу origin на GitHub. Это отправляет коммиты, которые yo имеют, которых они не имеют, и затем просит Git GitHub установить его master, чтобы указать на коммит слияния. Если это так, ваш Git запоминает это, так что ваша собственная диаграмма теперь выглядит так:

          ●--●--●
         /       \
...--o--o         ●   <-- master (HEAD), origin/master
         \       /
          o-----o

Когда кто-то еще запускает git fetch в Git на GitHub, который содержит другую копию, Git's Git's master теперь будет указывать на тот же самый последний коммит, поэтому вы увидите Merge branch 'master' of <url> в качестве сообщения журнала подсказки. Максимальный коммит этого master.


Обдумывая все это, помните, что сейчас здесь задействовано три Git-репозитория. Это GitHub's Git, содержащий копию репозитория, который вы обновляете с помощью git push. Это Git вашего коллеги, содержащий копию репозитория, который ваш коллега обновляет с GitHub, и который ваш коллега использует git push для отправки обновлений на GitHub. И есть ваш собственный Git, содержащий копию репозитория, который вы получили от GitHub, где вы используете git push для отправки обновлений на GitHub. Третий репозиторий GitHub просто действует как точка обмена .

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