Подтвердить что ты не робот

Нажмите локальную ветвь Git в начало

Я работаю над двумя машинами и репо на исходном репо на третьем (происхождение доступно из двух других, без прямого соединения между машиной1 и машиной2).

# Machine 1
$ git branch
  master
* testing
  cms

# Machine 2
$ git branch
* master

Теперь я хочу направить ветвь testing в начало координат и на машинке2 тоже, поэтому окончательный эффект будет следующим:

# Machine 2
$ git branch
* testing
  master

Я пробовал:

# Machine 1
$ git push origin testing

# Machine 2
$ git pull origin testing                # bunch of merge conflicts
$ git checkout -b testing origin/testing # errors too

Текущее состояние:

# Machine 1
$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/testing

Как это сделать?

Мой следующий вопрос, вероятно, будет: как удалить ветвь origin/testing?

4b9b3361

Ответ 1

Вы успешно перенесли ветвь тестирования в исходное состояние, так что теперь вам просто нужно получить ветвь machine2.

Не уверен в состоянии репо на machine2, поэтому я бы удалил каталог (или создаю новый для использования) и просто клонировал репо на Machine2 и проверил тестирование...

Итак, на Machine2 в пустой каталог (новый или чистый):

$ git clone [email protected]/somewhere
$ git branch
* master

$ git checkout testing
# ...
# something about getting and switching
# ... 

$ git branch
* testing 
master

Ответ 2

Вместо использования git pull (который извлекает и объединяет) попробуйте git fetch (который не будет пытаться объединиться с вашей текущей ветвью на machine2 и вызвать конфликты):

# Machine 1
$ git push origin testing

# Machine 2
$ git fetch origin testing
$ git checkout -b testing origin/testing

Ответ 3

Все, что вам нужно сделать, это следующее:

На машине 1 разверните удаленную ветку и привяжите к ней локальную ветвь тестирования:

git push -u origin testing

На машине 2 разверните локальную ветвь, связанную с ветвью удаленного тестирования:

git fetch origin && git checkout --track origin/testing

Теперь обе ветки локального тестирования должны быть развернуты и связаны с ветвью удаленного тестирования =)

Теперь для удаления удаленной ветки вы можете просто попробовать следующее:

git push origin --delete testing

или

git push origin :testing

Ответ 4

Оригинальный плакат гласит:

Мой следующий вопрос, вероятно, будет следующим: как удалить ветвь origin/testing?

Вы должны четко понимать, что вы подразумеваете под этим, потому что после того, как вы нажмете testing на удаленное репо, будет также локальная ветвь удаленного отслеживания origin/testing, которая отслеживает последнего известного состояния ветки testing на пульте дистанционного управления. Вы можете найти эту ветку удаленного отслеживания в .git/refs/remotes/origin/.

Удаление удаленных testing и локальных ветвей origin/testing

Если вы удалите ветку на пульте дистанционного управления с помощью следующих команд:

git push origin :testing
# Or
git push origin --delete testing

тогда локальная ветвь удаленного отслеживания origin/testing также будет автоматически удалена.

Удаление только локальной ветки origin/testing

Если по какой-то причине вам просто нужно удалить локальную ветвь удаленного отслеживания origin/testing, но не ветвь testing на пульте дистанционного управления, вы можете запустить команду git branch -d с помощью --remotes или -r:

git branch --delete --remotes origin/testing
# Or shorter
git branch -dr origin/testing

Если вы получите сообщение об ошибке, что ветвь не может быть удалена, поскольку она еще не была объединена, вы можете принудительно удалить ее, используя флаг -D вместо --delete или -D.

См. также

Ответ 5

Мой следующий вопрос, вероятно, будет следующим: как удалить ветвь origin/testing?

Чтобы ответить на следующий вопрос: выходите из ветки, вы намерены удалить и запустить:

git branch -d < branch_name >

-d удалить полностью объединенную ветвь

-D удалить ветку (даже если она не объединена)