Git Force вытащить ветку с пульта - PullRequest
0 голосов
/ 11 февраля 2012

Итак, у меня есть 2 ветки на GitHub: master и branchA.Скажем, я работаю над мастером, а мастер впереди на 3 коммита или что-то в этом роде.Так что есть коммиты d, e и f на master, которых нет в branchA.Далее скажите, что мой коллега загрузил ветку A на GitHub с коммитом g.Итак, у нас есть:

master: a, b, c, d, e, f
branchA: a, b, c, g

Скажем, теперь я хочу переключиться на BranchA и вытащить именно то, что находится на GitHub.Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую git branch branchA, он автоматически использует master в качестве моей начальной позиции и, таким образом, добавляет d, e, f, а когда я вытягиваю ветку A, я получаю конфликты, поскольку g и d, e, f еще нетсовместимо.

Есть ли способ извлечь из GitHub такой, чтобы мой локальный журнал фиксации соответствовал этому на GitHub?Я попытался git pull -f, но это, очевидно, тоже не сработало.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Вы должны

git fetch

затем проверьте, что произошло с чем-то вроде

git log --all --oneline --graph --decorate

Теперь вы можете объединить или перебазировать работу, которая была выполнена одновременно. Любые ветки с префиксом «origin» будут тем, что есть на github (при условии, что это то место, откуда вы клонировали). Местные ветви тоже будут по-разному окрашены.

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

git checkout -t origin/someBranch

Я бы использовал pull только в исключительных случаях, когда я объединяю или отклоняю свою собственную работу. В зависимости от того, что сделал кто-то другой, я могу выбрать перебазирование вместо слияния.

0 голосов
/ 11 февраля 2012
git fetch origin
git checkout origin/branchA -b <local branch name>

Это создаст локальную ветку с указанным вами именем, которая является точной копией branchA на origin.Если ваш пульт GitHub имеет имя, отличное от origin, измените его соответствующим образом.

Вы также можете просто указать начальную точку с помощью git branch:

git fetch origin
git branch <local branch name> origin/branchA
git checkout <local branch name>

Флаг -b дляgit checkout просто делает все на один шаг короче, если вы планируете в любом случае проверить созданную вами ветку.

Кроме того, если вы хотите, чтобы имя вашей локальной ветки было идентично удаленной ветке, естьеще более короткий путь:

git fetch origin
git checkout -t origin/branchA

, который создаст локальный branchA, который соответствует origin 'branchA.

...