#git #github
Вопрос:
Например:
Person A is working in the X branch.
Person B is working in the Y branch.
Person C pulled the codes from Person B's branch by rebasing and git fetch.
Because it wasn't doing the fast-forwarding.
Теперь проблема в том, что всякий раз, когда пользователь A и пользователь B фиксируют и отправляют свои коды в свои ветки и в GitHub, это показывает, что он попал в ветку этого человека C.
Может кто-нибудь, пожалуйста, объяснить, почему это происходит?
Ответ №1:
Когда у вас git push
нет дополнительных аргументов, вы нажимаете на ветку удаленного отслеживания локальной ветки «, иногда также называемую веткой восходящего потока. Например, branchA
может отслеживать origin/branchA
. Но это не обязательно так. branchA
может отслеживать origin/branchC
.
Вы можете видеть, что отслеживают все ваши локальные ветки git branch -vv
.
branchA 24c27e21 [origin/branchA] Description of the last commit to branchA
Ветка отслеживания обычно настраивается автоматически, этим можно управлять branch.autoSetupMerge
. Его также можно установить вручную при создании ветки с git branch --track
помощью и изменить с git branch --set-upstream-to
помощью .
Обратите внимание, что все это является частью локального репозитория. PersonC не должен влиять на то, как отслеживается PersonA или PersonB.
Другой способ, которым вы можете перейти к ветке с другим именем, — это просто указать git push
, чтобы сделать это.
git push origin branchA:branchC
Это говорит о том, что нужно нажать branchA
branchC
на пульте origin
дистанционного управления.
Комментарии:
1. Большое вам спасибо за объяснение. Я хотел бы проголосовать за ваш ответ, но моя репутация не на должном уровне. :’)
2. @monster957 Спасибо, рад помочь. Ваш представитель попадет туда. На данный момент примите ответ, как только он вам позволит.