Как случилось, что кто-то вставляет свои коды в ветку другого, не переходя к этой конкретной ветке?

#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 Спасибо, рад помочь. Ваш представитель попадет туда. На данный момент примите ответ, как только он вам позволит.