Saya punya 2 git, branch1 dan branch2 dan saya ingin menggabungkan file.py di branch2 menjadi file.py di branch1 dan hanya file itu.
Intinya saya hanya ingin bekerja pada file.py di branch1 tetapi ingin memanfaatkan perintah gabungan. Apa cara terbaik untuk melakukan ini?
Jawaban:
Ketika konten dalam
file.py
dari branch2 yang tidak lagi berlaku untuk branch1 , itu memerlukan memilih beberapa perubahan dan meninggalkan yang lain. Untuk kontrol penuh lakukan penggabungan interaktif menggunakan--patch
sakelar:Bagian mode interaktif di halaman manual untuk
git-add(1)
menjelaskan kunci yang akan digunakan:Perintah split sangat berguna.
sumber
git init <dir>
) dan akhirnya membuangnya (rm -r <dir>
).Meskipun bukan gabungan , terkadang seluruh isi file lain di cabang lain diperlukan. Jason RudolphPosting blog menyediakan cara sederhana untuk menyalin file dari satu cabang ke cabang lainnya. Terapkan teknik ini sebagai berikut:
Sekarang
file.py
sekarang di branch1 .sumber
file.py
dengan apa pun yang ada di cabang 2.Tidak ada jawaban lain saat ini yang benar-benar akan "menggabungkan" file, seolah-olah Anda menggunakan perintah gabung. (Paling-paling mereka akan mengharuskan Anda untuk memilih secara manual.) Jika Anda benar-benar ingin mengambil keuntungan dari penggabungan menggunakan informasi dari leluhur yang sama, Anda dapat mengikuti prosedur berdasarkan prosedur yang ditemukan di bagian "Penggabungan Lanjut" pada git Manual Referensi.
Untuk protokol ini, saya berasumsi Anda ingin menggabungkan file 'path / to / file.txt' dari origin / master ke HEAD - modifikasi yang sesuai. (Anda tidak harus berada di direktori teratas repositori Anda, tetapi itu membantu.)
git merge-file harus menggunakan semua pengaturan penggabungan default Anda untuk pemformatan dan sejenisnya.
Perhatikan juga bahwa jika "milik kami" adalah versi salin yang berfungsi dan Anda tidak ingin terlalu berhati-hati, Anda dapat beroperasi langsung di file:
sumber
Apakah semua modifikasi dilakukan
file.py
dalambranch2
komitmen mereka sendiri, terpisah dari modifikasi ke file lain? Jika demikian, Anda dapat dengan mudahcherry-pick
mengubah:Jika tidak,
merge
tidak beroperasi di jalur individual ... Anda mungkin juga membuatgit diff
patchfile.py
perubahan daribranch2
dangit apply
mereka kebranch1
:sumber
Anda dapat
stash
danstash pop
file:sumber
Untuk menggabungkan hanya perubahan dari branch2
file.py
, buat perubahan lainnya hilang.Penggabungan bahkan tidak akan pernah melihat file lain. Anda mungkin perlu '-f' checkout jika pohon cukup berbeda.
Perhatikan bahwa ini akan membuat branch1 tampak seolah-olah semua yang ada dalam sejarah branch2 sampai saat itu telah digabung, yang mungkin bukan yang Anda inginkan. Versi checkout pertama yang lebih baik di atas mungkin
dalam hal ini pesan komit mungkin juga harus
sumber
Saya dalam situasi yang sama, saya ingin menggabungkan file dari cabang yang memiliki banyak komit di 2 cabang. Saya mencoba banyak cara di atas dan lainnya saya temukan di internet dan semuanya gagal (karena komit sejarah itu kompleks) jadi saya memutuskan untuk melakukan cara saya (cara gila).
sumber
Apa yang saya lakukan adalah sedikit manual, tetapi saya:
revert
;HEAD~1
, yaitu, negara mereka di komit gabungan;Jelek? Iya. Mudah diingat? Juga ya.
sumber