Как переместить ветку Git в свой собственный репозиторий?


180

У меня есть ветка, которую я хотел бы перенести в отдельный репозиторий Git, и в идеале сохранить историю этой ветки в процессе. До сих пор я смотрел git filter-branch, но я не могу понять, может ли он делать то, что я хочу делать.

Как извлечь ветку Git из собственного репозитория?

Ответы:


281

Вы можете просто перенести ветку в новый репозиторий. Вся его история пойдет с этим. Затем вы можете выбрать, следует ли удалить ветку из исходного хранилища.

например

git push url://to/new/repository.git branch-to-move:new-branch-name

Для нового репозитория new-branch-name обычно является master.

Создать новый пустой репозиторий можно с помощью git init.


15
На всякий случай, если кому-то интересно, я заменил URL на путь к каталогу Git-репозитория, и это сработало отлично.
Aupajo

48
Вы также можете назвать название филиала в новом хранилище: git push url://to/new/repository.git branch-to-move:new-branch-name
Ив Ван Бройховен,

4
Приведенный выше комментарий Ива верен, иначе у вас не будет мастера, и процесс клонирования завершится warning: remote HEAD refers to nonexistent ref, unable to checkout.. Если уже на этом этапе, просто продолжайте, git checkout -b branch-to-moveи вы в безопасности, или вы просто git checkout -b masterхотите иметь свою основную ветвь :)
Ain Tohvri

git checkout -b masterрешил мою проблему, это было на экране error: src refspec master does not match any.(только удивляюсь, почему я не увидел название ветви, в которой я был) Спасибо
kangkyu

3
Если этот ответ вас и сбивал с толку, вот как я понял его, чтобы заставить его работать: 1) в вашем терминале, находиться в каталоге, содержащем репо и ветку, которую вы хотите сделать в новом репо; 2) urlдолжен быть git url, например git@github.com: brianzelip / groceries.git; 3) branch-to-moveветка текущего репо, которую вы хотите сделать в новый репо; 4) new-branch-nameимя , которое вы хотите для нового филиала в новом репо создается, то есть: master.
Брайан Зелип
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.