В чем разница между git push -u?

На GitHub они советуют делать git push -u origin master вместо git push.

В чем основное отличие?


person jozinho22    schedule 12.05.2020    source источник
comment
stackoverflow.com/search?q=%5Bgit-push%5D+u   -  person phd    schedule 12.05.2020


Ответы (1)


От 1_:

   -u, --set-upstream
      For every branch that is up to date or successfully pushed, add
      upstream (tracking) reference ...

По сути, это означает, что он не только загрузит ваш master в master по адресу origin, но и настроит локальную копию origin/master в качестве отслеживающей ветки, то есть upstream вашего локального master.

Обычно это уже так, поэтому, если это так, пребывание в master и выполнение git push -u origin master ничем не отличается от обычного git push. Но если вы неправильно настроили свой репозиторий, то иногда длинная версия исправит это автоматически.

Естественно, выполнение этой команды без размышлений может привести к плохим ситуациям, например, если вы находитесь в общедоступной рабочей ветке и делаете это:

{mybranch} $ git push -u origin master

Теперь вы загрузили свой mybranch как master и настроили origin/master как upstream для mybranch вместо правильного origin/mybranch, и вы создали настоящий беспорядок!

Я предполагаю, что GitHub рекомендует это для новичков в git, чтобы избежать звонков в их службу поддержки. Но я бы не рекомендовал это по умолчанию для нажатия. На самом деле, если вы неправильно настроите восходящий поток, простой git push завершится ошибкой с этим сообщением:

fatal: The current branch a has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

который точно говорит вам, что происходит и как это исправить (--set-upstream является синонимом -u).

person rodrigo    schedule 12.05.2020