Нажмите местную ветку Git к источнику - PullRequest
30 голосов
/ 24 июня 2010

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

# Machine 1
$ git branch
  master
* testing
  cms

# Machine 2
$ git branch
* master

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

# 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?

Ответы [ 5 ]

23 голосов
/ 24 июня 2010

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

# Machine 1
$ git push origin testing

# Machine 2
$ git fetch origin testing
$ git checkout -b testing origin/testing
16 голосов
/ 24 июня 2010

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

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

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

$ git clone git@github/somewhere
$ git branch
* master

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

$ git branch
* testing 
master
1 голос
/ 11 сентября 2015

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

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

git push -u origin testing

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

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

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

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

git push origin --delete testing

или

git push origin :testing
0 голосов
/ 24 июня 2014

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

Мой следующий вопрос, вероятно, будет таким: как удалить ветку 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 flag:

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

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

См. также

0 голосов
/ 24 июня 2014

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

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

git branch -d <имя-ветви>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...