Як перенести гілку Git у власне сховище?


180

У мене є гілка, яку я хотів би перенести до окремого сховища Git і в ідеалі зберігати історію цієї гілки в процесі. Поки що я дивився git filter-branch, але не можу зрозуміти, чи може він робити те, що я хочу робити.

Як витягнути гілку Git у власне сховище?

Відповіді:


281

Ви можете просто перенести гілку до нового сховища. З нею піде вся його історія. Потім можна вибрати, чи видаляти гілку з початкового сховища.

напр

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

Для нового сховища, найменування нової гілки зазвичай є головним.

Створення нового порожнього сховища можна виконати за допомогою 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) urlURL повинен бути git url, як git@github.com: brianzelip / groceries.git; 3) branch-to-move- гілка поточного репо, яку ви хочете перетворити на нове репо; 4) new-branch-nameім'я , яке ви хочете для нової філії в новому репо створюється, тобто: master.
Брайан Зеліп

19

Це збереже історію всіх гілок, але зробить вашу копію точкою до однієї гілки, зокрема:

git clone -b newbranch CurrentRepo NewRepo

Це нічого не рухає, просто робить копію.


2
Варто зазначити, що clone -bце нове. Він вимагає git> = 1.6.5 (випущено в жовтні 2009 року).
CB Bailey

У мене виникли проблеми з тим, щоб це було на роботі, але це було до того, як я побачив повідомлення від Чарльза Бейлі.
Aupajo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.