В чем разница между нажатием ветки и слиянием, а затем нажатием? - программирование
Подтвердить что ты не робот

В чем разница между нажатием ветки и слиянием, а затем нажатием?

Один из способов:

git checkout myBranch
git push origin myBranch:master

Другой способ:

git checkout master
git merge myBranch
git push

В чем разница между этими двумя?

4b9b3361

Ответ 1

Это:

git checkout myBranch
git push origin myBranch:master

просто пытается выполнить быстрое переключение (то есть принудительное обновление) от myBranch до master. Если master достижимо от myBranch, т.е. master не содержит никаких коммитов, которые не имеет и myBranch, то нажатие будет успешным; в противном случае нажатие будет отклонено.

Предыдущий git checkout myBranch не имеет отношения к git push, так как вы используете refspec myBranch:master. Вы можете узнать больше о refspecs на Git Internals - Refspec.

Это:

git checkout master
git merge myBranch
git push

фактически объединяет myBranch в master, а затем пытается направить его на удаленный (с конфигурацией по умолчанию репо Git, пульт будет происходить).

Поскольку myBranch фактически сливается с master, то предполагая, что удаленный master находится за локальным, то есть он не содержит коммитов, которые локальный не имеет, то нажатие будет выполнено, в противном случае это не удастся.