Pertanyaan Ekstrak bagian dari repositori git?


Asumsikan repositori git saya memiliki struktur berikut:

/.git
/Project
/Project/SubProject-0
/Project/SubProject-1
/Project/SubProject-2

dan repositori memiliki beberapa komit. Sekarang salah satu subproyek (SubProject-0) tumbuh cukup besar, dan saya ingin mengambil SubProject-0 keluar dan mengaturnya sebagai proyek yang berdiri sendiri. Apakah mungkin untuk mengekstrak semua sejarah commit yang melibatkan SubProject-0 dari repositori git induk dan memindahkannya ke yang baru?


32
2018-03-29 13:38


asal


Jawaban:


Lihat http://git-scm.com/docs/git-filter-branch

Saya pikir Anda membutuhkan sesuatu seperti

git filter-branch --subdirectory-filter Project/SubProject-0 --prune-empty -- --all

dalam tiruan repositori.


37
2018-03-29 13:41



Saya perlu melakukan sesuatu yang serupa, tetapi saya ingin memindahkan satu proyek dari repo ke yang lain. Apa yang saya lakukan adalah menggunakan pengambilan, karena dapat mengambil objek dari sumber apa pun.

Jadi, pada dasarnya, saya membuat cabang baru, menghapus barang yang tidak dibutuhkan di cabang itu, lalu menggunakan git fetch untuk menarik cabang dari satu repo ke repo lainnya. Setelah saya memiliki objek, gabungkan melakukan trik.

Misalnya.

Di repositori yang memiliki barang asli:

    git checkout -b temp master
    git rm -r Unneeded_stuff
    git commit -m 'pruning'

Kemudian Anda dapat mengambil cabang tersebut dari satu repositori menjadi yang benar-benar berbeda (tidak terkait):

    cd /path/to/other/repository
    git fetch /path/to/source/repo temp:temp

di mana temp: temp berarti "ambil temp pada sumbernya dan simpan sebagai temp di sini". Dari sana Anda bisa menggabungkan hasilnya ke tuan Anda.

    git merge temp

Anda kemudian dapat menghapus cabang temp, karena dalam kasus pertama itu bukan sesuatu yang Anda ingin menggabungkan dengan repo asli, dan dalam kasus kedua Anda telah menggabungkannya.

Saya yakin langkah-langkah ini bisa dikompresi sedikit, tetapi set ini tampaknya bagus dan jelas.


1
2018-06-28 05:46