#git #github #git-branch
#git #github #git-branch
Вопрос:
Недавно я хотел клонировать большой репозиторий, поэтому в итоге я клонировал одну ветку.
git clone --single-branch dev git@github.com:xyz/abc.git
В этом репозитории есть несколько других разветвленных, а именно stage amp; master.
Теперь у моего локального клона есть только dev
ветка.
Мой вопрос: как мне теперь оформить заказ на stage
ветку?
Я попытался очистить ветку-сироту git checkout --orphan stage
, но не могу получить полную историю фиксации из ветки удаленного этапа
Ответ №1:
Вы могли бы сделать что-то вроде:
git fetch <remote> <remote_branch>:<local_branch>
git checkout <local_branch>
Пример:
git fetch origin stage:stage
git checkout stage
Это загружает ссылки / объекты из удаленной ветки stage
и создает локальную ветку, вызываемую stage
с полной историей.
Ответ №2:
git clone --single-branch dev git@github.com:xyz/abc.git
должен был завершиться с сообщением об ошибке fatal: repository 'dev' does not exist
. Может быть, вы пропустили -b
или --branch
раньше dev
?
В вашем случае git checkout --orphan stage
будет создана ветка-сирота stage
из последней фиксации dev
. Это не то, что вы хотите.
История stage
еще не полностью извлечена. Для извлечения stage
и создания локального stage
:
git fetch origin stage:stage
Оформить покупку stage
:
git checkout stage
Таким образом, локальная stage
ветка может не иметь восходящей ветки. Позже вы можете запустить git push origin -u stage:stage
.
Если вы собираетесь создать локальную ветку-сироту foo
stage
, вы можете запустить:
git fetch origin stage --depth 1
git checkout --orphan foo FETCH_HEAD
git commit
Ответ №3:
- Извлеките 1 или все удаленные ветки на свой локальный компьютер.
- Переключитесь на нужную ветку
- Извлеките последние изменения из удаленного репозитория.
git fetch --all // All branch fetch git fetch <remote> <remote_branch_name> // Single branch fetch git checkout <remote_branch_name> git pull <remote> <branch_name>
ПРИМЕЧАНИЕ: вы можете просмотреть историю фиксации любой ветки, не переключаясь на эту конкретную ветку, используя
git log <branch_name>