Saya memiliki dua cabang yaitu master
dan development
dalam Repositori GitHub. Saya melakukan semua perkembangan saya di cabang pengembangan seperti yang ditunjukkan.
git branch development
git add *
git commit -m "My initial commit message"
git push -u origin development
Sekarang saya ingin menggabungkan semua perubahan pada development
cabang ke dalam master
. Pendekatan saya saat ini adalah:
git checkout master
git merge development
git push -u origin master
Tolong beri tahu saya jika prosedur yang saya ikuti benar.
git pull -u
setel pelacakan hulu untuk cabang (atau semua cabang jika mendorong lebih dari satu). Setelah diatur, pelacakan akan berlanjut. Tidak ada alasan untuk menggunakannya terus menerus.Jawaban:
Saya biasanya suka bergabung
master
dengan yangdevelopment
pertama sehingga jika ada konflik, saya bisa menyelesaikannya didevelopment
cabang itu sendiri danmaster
tetap bersih.Tidak ada banyak perbedaan dalam kedua pendekatan itu, tetapi kadang-kadang saya perhatikan bahwa saya belum ingin menggabungkan cabang ke dalam
master
, setelah menggabungkannya, atau bahwa masih ada banyak pekerjaan yang harus dilakukan sebelum ini dapat digabung. , jadi saya cenderungmaster
tidak tersentuh sampai barang terakhir.EDIT: Dari komentar
Jika Anda ingin melacak siapa yang melakukan penggabungan dan kapan, Anda bisa menggunakan
--no-ff
flag saat penggabungan untuk melakukannya. Ini umumnya berguna hanya ketika menggabungkandevelopment
ke dalammaster
(langkah terakhir), karena Anda mungkin perlu menggabungkanmaster
ke dalamdevelopment
(langkah pertama) beberapa kali dalam alur kerja Anda, dan membuat node komit untuk ini mungkin tidak terlalu berguna.sumber
--no-ff
Diperlukan eksplisit untuk menggabungkan ke master untuk memperbaikinya.--no-ff
. :)git merge --no-ff development
hanya untuk memperbaiki penggunaan @ terpilih.A->B->C
menjadi master, danA->X->Y
merupakan cabang dev Anda. Jika Anda mengubah bagian dari fileX
yang mungkin memiliki konflik dengan perubahanA
, itu tidak akan menjadi konflik, karenaA
merupakan leluhurX
. Mengenai perubahan yang hilang, periksa stackoverflow.com/questions/7147680/… untuk memulihkan perubahan apa pun.Secara pribadi, pendekatan saya mirip dengan Anda, dengan beberapa cabang lagi dan beberapa komitmen ketika mereka kembali untuk menguasai.
Salah satu rekan kerja saya tidak suka harus berganti cabang begitu banyak dan tetap di cabang pengembangan dengan sesuatu yang mirip dengan yang berikut semua dijalankan dari cabang pengembangan.
Baris pertama memastikan dia memiliki komit upstream yang telah dibuat untuk dikuasai sejak terakhir kali memperbarui repositori lokalnya.
Yang kedua menarik perubahan itu (jika ada) dari master ke pengembangan
Yang ketiga mendorong cabang pengembangan (sekarang sepenuhnya digabung dengan master) ke asal / master.
Saya mungkin memiliki alur kerja dasarnya yang sedikit salah, tetapi itulah intinya.
sumber
rebase
memperbaruidev
cabang bukanmerge
.Penjelasan dari bawah untuk orang-orang yang datang ke sini tanpa sepengetahuan cabang.
Anda mulai membuat cabang baru dengan cara ini:
1) Klon repositori dalam direktori lokal Anda (atau buat repositori baru):
2) Buat cabang baru. Ini akan berisi file terbaru dari repositori cabang master Anda
3) Ubah cabang git Anda saat ini ke new_branch
4) Lakukan coding, commit, seperti biasa ...
5) Ketika pekerjaan selesai di cabang ini, bergabung dengan cabang "master":
Pembaruan: Saya sangat merekomendasikan untuk menggunakan GitKraken untuk ini untuk melihat pohon perubahan visual dan melihat lebih baik semua logika dan komitmen.
sumber
release
cabang daridevelop
. Kemudian menambahkan file catatan rilis dan berkomitmen. Kemudian selesai rilis yang menggabungkan kembali ke keduanyamaster/develop
. tetapi cabang master saya hanya memiliki catatan rilis yang baru ditambahkan di dalamnya. tidak ada file lain selama komit pengembangan sebelumnya yang diperbarui di dalamnya.Alangkah baiknya jika Anda bisa menggunakan alur kerja Git Flow . Dapat menggabungkan mengembangkan cabang menjadi master dengan mudah.
Yang ingin Anda lakukan hanyalah mengikuti instruksi git-flow yang disebutkan di sini:
LANGKAH:
git flow release start <version_number>
git flow release finish <version_number>
git push
untuk mempublikasikan perubahan ke master jarak jauh .Untuk informasi lebih lanjut, kunjungi halaman - http://danielkummer.github.io/git-flow-cheatsheet/
sumber
sumber
Ya, ini benar, tetapi sepertinya alur kerja yang sangat mendasar, di mana Anda hanya menyangga perubahan sebelum siap untuk diintegrasikan. Anda harus melihat alur kerja yang lebih maju yang didukung git. Anda mungkin menyukai pendekatan cabang topik , yang memungkinkan Anda bekerja pada beberapa fitur secara paralel, atau pendekatan kelulusan yang sedikit memperluas alur kerja Anda saat ini.
sumber
Jika Anda menggunakan Mac atau Ubuntu, buka folder kerja cabang. Di terminal
misalkan harisdev adalah nama cabang.
jika ada file yang tidak dilacak atau tidak dikomit, Anda akan mendapatkan kesalahan dan Anda harus melakukan atau menghapus semua file yang tidak dilacak atau tidak dikomit.
Satu perintah terakhir untuk menghapus cabang.
sumber
Langkah 1
Buat dan alihkan ke cabang "dev" baru, tempat file git lokal Anda tidak disinkronkan dengan remote tetapi cabang "dev" belum ada.
Langkah 2
Buat perubahan pada cabang "dev" (saat ini jika Anda mengikuti langkah 1), komit dan dorong ke cabang "dev" yang jauh.
Langkah 3
Gabungkan cabang "dev" Anda menjadi "master".
sumber
Beginilah biasanya saya melakukannya. Pertama, yakin bahwa Anda siap untuk menggabungkan perubahan Anda menjadi master.
git fetch
git checkout master
.git pull
git merge development
git push -u origin master
dan Anda selesai.Anda dapat menemukan lebih banyak tentang git yang bergabung dalam artikel.
sumber
1) Pada Pengembangan cabang, periksa status git menggunakan perintah berikut:
Seharusnya tidak ada kode yang tidak dikomit. Jika ya, dorong kode Anda di cabang Pengembangan:
2) Di cabang Pengembangan, jalankan dua perintah berikut:
Ini akan mendorong kode cabang Pengembangan Anda ke cabang utama.
sumber
-f
tidak direkomendasikan.Berdasarkan @Sailesh dan @DavidCulp:
Perintah pertama akan memastikan Anda memiliki semua komitmen upstream yang dibuat untuk master jarak jauh, dengan respons Sailesh yang tidak akan terjadi.
Yang kedua akan melakukan penggabungan dan menciptakan konflik yang kemudian bisa Anda selesaikan.
Setelah melakukannya, Anda akhirnya dapat checkout master untuk beralih ke master.
Kemudian Anda menggabungkan cabang pengembangan ke master lokal. Bendera no-ff akan membuat simpul komit di master agar seluruh gabungan dapat dilacak.
Setelah itu, Anda dapat melakukan dan mendorong penggabungan.
Prosedur ini akan memastikan ada komitmen gabungan dari pengembangan untuk menguasai yang dapat dilihat orang, maka jika mereka melihat cabang pengembangan, mereka dapat melihat komitmen individu yang telah Anda buat pada cabang tersebut selama pengembangannya.
Secara opsional, Anda bisa mengubah komitmen gabungan Anda sebelum mendorongnya, jika Anda ingin menambahkan ringkasan dari apa yang dilakukan di cabang pengembangan.
EDIT: jawaban awal saya menyarankan
git merge master
yang tidak melakukan apa-apa, lebih baik dilakukangit merge FETCH_HEAD
setelah mengambil asal / mastersumber
Setelah Anda 'checkout' cabang pengembangan Anda ...
sumber
Jika Anda menggunakan gerrit, perintah berikut ini berfungsi dengan baik.
Anda dapat menyimpan dengan pesan komit default. Pastikan, id perubahan telah dibuat. Anda dapat menggunakan perintah berikut untuk memastikan.
Kemudian dorong dengan perintah berikut.
Anda mungkin menemukan pesan kesalahan seperti di bawah ini.
Untuk menyelesaikan ini, admin proyek gerrit harus membuat referensi lain di gerrit bernama 'ref / untuk / ref / kepala / master' atau 'ref / untuk / ref / kepala / *' (yang akan mencakup semua cabang di masa depan). Kemudian beri izin 'Dorong Gabung Komit' untuk referensi ini dan izin 'Kirim' jika diperlukan untuk Kirim GCR.
Sekarang, coba lagi perintah push di atas, dan itu akan berhasil.
Kredit:
https://github.com/ReviewAssistant/reviewassistant/wiki/Merging-branches-in-Gerrit
https://stackoverflow.com/a/21199818/3877642
sumber
Saya pikir solusi termudah adalah
Ini juga menjaga sejarah semua cabang yang digunakan
sumber
sumber
pull
lagi. Juga, tidak jelas nilai apa yang ditambahkan jawaban ini dibandingkan dengan jawaban yang ada.