Получить полную историю коммитов из удаленной ветки в локальную ветку-сироту

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