Bagaimana cara memindahkan cabang Git ke repositori sendiri?


180

Saya memiliki cabang yang ingin saya pindahkan ke repositori Git yang terpisah, dan idealnya menyimpan sejarah cabang itu dalam proses. Sejauh ini saya sudah melihat git filter-branch, tetapi saya tidak bisa melihat apakah itu bisa melakukan apa yang ingin saya lakukan.

Bagaimana cara mengekstrak cabang Git ke dalam repositorinya sendiri?

Jawaban:


281

Anda cukup mendorong cabang ke repositori baru. Semua sejarahnya akan pergi bersamanya. Anda kemudian dapat memilih apakah akan menghapus cabang dari repositori asli.

misalnya

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

Untuk repositori baru, nama cabang baru biasanya master.

Membuat repositori baru yang kosong dapat dilakukan git init.


15
Kalau-kalau ada yang bertanya-tanya, saya mengganti URL dengan path ke direktori repositori Git, dan itu berfungsi dengan baik.
Aupajo

48
Anda juga dapat memberi nama nama cabang di repositori baru: git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven

4
Komentar Yves di atas benar, jika tidak, Anda tidak akan memiliki master di sana dan proses kloning akan berakhir warning: remote HEAD refers to nonexistent ref, unable to checkout.. Jika sudah pada tahap itu, cukup ikut git checkout -b branch-to-movedan Anda aman atau cukup pergi dengan git checkout -b mastermemiliki cabang utama Anda :)
Ain Tohvri

git checkout -b mastermemecahkan masalah saya itu di layar error: src refspec master does not match any.(hanya bertanya-tanya mengapa saya tidak melihat nama cabang saya berada di) Terima kasih
kangkyu

2
Jika jawaban ini membingungkan Anda juga, inilah cara saya memahaminya untuk membuatnya berfungsi: 1) di terminal Anda, berada di direktori yang berisi repo dan cabang yang ingin Anda buat menjadi repo baru; 2) urlharus berupa url git, seperti git@github.com: brianzelip / groceries.git; 3) branch-to-moveadalah cabang dari repo saat ini yang ingin Anda buat menjadi repo baru; 4) new-branch-nameadalah nama yang Anda inginkan untuk cabang baru di repo baru yang dibuat, yaitu: master.
Brian Zelip

19

Ini akan membuat sejarah semua cabang, tetapi membuat salinan Anda menunjuk ke satu cabang khususnya:

git clone -b newbranch CurrentRepo NewRepo

Ini tidak 'memindahkan' apa pun, hanya membuat salinan.


2
Perlu dicatat bahwa clone -bitu baru. Itu membutuhkan git> = 1.6.5 (dirilis Oktober 2009).
CB Bailey

Saya kesulitan membuat ini berfungsi, tetapi itu sebelum saya melihat pesan dari Charles Bailey.
Aupajo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.