Tarik permintaan vs Permintaan gabung

468

Apa perbedaan antara permintaan Tarik dan permintaan Gabung.

Di Github, ini adalah Permintaan Tarik dan di GitLab misalnya, ini adalah Permintaan Gabung ... Apakah ada perbedaan antara keduanya?

Pacane
sumber

Jawaban:

766

GitLab ini "permintaan merge" fitur setara dengan GitHub ini "permintaan tarik" fitur. Keduanya merupakan cara untuk menarik perubahan dari cabang lain atau bercabang ke cabang Anda dan menggabungkan perubahan dengan kode yang ada. Mereka adalah alat yang berguna untuk tinjauan kode dan manajemen perubahan.

Sebuah artikel dari GitLab membahas perbedaan dalam penamaan fitur:

Gabungkan atau tarik permintaan dibuat dalam aplikasi manajemen git dan minta orang yang ditugaskan untuk menggabungkan dua cabang. Alat-alat seperti GitHub dan Bitbucket memilih permintaan tarik nama karena tindakan manual pertama adalah dengan menarik cabang fitur. Alat-alat seperti GitLab dan Gitorious memilih permintaan penggabungan nama karena itu adalah tindakan terakhir yang diminta dari penerima hak. Dalam artikel ini kita akan merujuk mereka sebagai permintaan gabungan.

"Permintaan gabung" tidak boleh dikacaukan dengan git mergeperintah. "Tarik permintaan" juga tidak boleh bingung dengan git pullperintah. Kedua gitperintah digunakan di belakang layar dalam kedua permintaan tarik dan permintaan gabungan, tetapi permintaan menggabungkan / menarik mengacu pada topik yang jauh lebih luas daripada hanya dua perintah ini.

gilly3
sumber
1
Apakah GitHub membuat cabang perantara / sementara (tidak terlihat) saat permintaan tarik dilakukan?
Robert Koritnik
1
@stevemao dapatkah kita mengaksesnya? Apakah mereka benar-benar hanya dibaca karena kita dapat menyelesaikan konflik pada mereka?
Robert Koritnik
11
Apa yang saya lewatkan? pull = fetch + merge. Jika tindakan terakhir digabungkan, maka tindakan pertama harus diambil.
Vytenis Bivainis
61
MR hanya nama yang lebih baik di sekitar. Tarik Permintaan tidak pernah masuk akal bagi saya sampai saya membaca penjelasan Anda tentang hal itu sebagai tindakan pertama, sementara saya mengerti apa yang dimaksud Permintaan Gabungan saat saya membacanya pertama kali untuk yang pertama. "Halo, bisakah kamu menggabungkan kode ini menjadi cabang utama?" vs "halo, bisakah Anda menarik kode ini ke cabang tak terlihat untuk <tersirat bergabung>" - ada pemenang yang jelas di sini.
Granitosaurus
7
@Granitosaurus Setuju. Sebagai pemula untuk git, permintaan tarik benar-benar tidak seperti yang saya harapkan. Ketika saya mulai menggunakan Gitlab, menggabungkan permintaan masuk akal segera.
Mark Lyons
54

Mereka adalah fitur yang sama

Gabungkan atau tarik permintaan dibuat dalam aplikasi manajemen git dan minta orang yang ditugaskan untuk menggabungkan dua cabang. Alat-alat seperti GitHub dan Bitbucket memilih permintaan tarik nama karena tindakan manual pertama adalah dengan menarik cabang fitur. Alat-alat seperti GitLab dan Gitorious memilih permintaan penggabungan nama karena itu adalah tindakan terakhir yang diminta dari penerima hak. Dalam artikel ini kita akan merujuk mereka sebagai permintaan gabungan.

- https://about.gitlab.com/2014/09/29/gitlab-flow/

rneves
sumber
tidakkah menggabungkan tanggung jawab pengembang yang menambahkan fitur baru? jika pengembang A menambahkan fitur di feature_branch ia harus mengambil cabang master dan menggabungkannya di atas cabangnya menyelesaikan semua konflik dan mengujinya sebelum membuat permintaan menggabungkan?
Ciasto piekarz
2
Ya tapi masih ada penggabungan maju cepat yang harus dilakukan seseorang setelah itu untuk menguasai kode. Dan sebenarnya saya pikir pada tim pengembang penuh waktu mungkin yang terbaik adalah jika pengembang fitur melakukan penggabungan juga, tetapi mungkin berguna bagi mereka untuk menunggu seseorang untuk meninjau PR mereka terlebih dahulu.
bdsl
21

Menurut saya, itu berarti kegiatan yang sama tetapi dari sudut pandang yang berbeda:

Pikirkan tentang itu, Alice membuat beberapa komitmen pada repositori A, yang diambil dari repositori Bob.

Ketika Alice ingin "menggabungkan" perubahannya menjadi B, ia sebenarnya ingin Bob "menarik" perubahan ini dari A.

Karena itu, dari sudut pandang Alice, ini adalah "permintaan penggabungan", sementara Bob melihatnya sebagai "permintaan tarik".

K. Symbol
sumber
Itu mengingatkan saya pada contoh ketika saya membuat laporan kecil untuk memberi tahu kolega lain cara kerja git.
Ravi Yadav
4

Ada sedikit perbedaan dalam hal manajemen konflik. Jika terjadi konflik, permintaan tarik di Github akan menghasilkan gabungan komit di cabang tujuan . Di Gitlab, ketika konflik ditemukan, modifikasi yang dilakukan akan pada gabungan komitmen pada sumber cabang .

Lihat https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html

"GitLab menyelesaikan konflik dengan membuat komit gabungan di cabang sumber yang tidak secara otomatis digabung ke cabang target. Ini memungkinkan komit gabungan untuk ditinjau dan diuji sebelum perubahan digabung, mencegah perubahan yang tidak diinginkan memasuki cabang target tanpa meninjau atau menghancurkan membangun. "

iclman
sumber
3

GitLab 12.1 (Juli 2019) memperkenalkan perbedaan:

" Gabungkan Permintaan untuk Masalah Rahasia "

Ketika mendiskusikan, merencanakan, dan menyelesaikan masalah rahasia, seperti kerentanan keamanan, bisa jadi sangat menantang bagi proyek-proyek sumber terbuka untuk tetap efisien karena repositori Git bersifat publik.

https://about.gitlab.com/images/12_1/mr-confidential.png

Pada 12.1, sekarang mungkin untuk masalah-masalah rahasia dalam proyek publik untuk diselesaikan dalam alur kerja yang disederhanakan menggunakan tombol Buat permintaan gabungan rahasia, yang membantu Anda membuat permintaan gabungan dalam garpu pribadi proyek.

Lihat " Masalah rahasia " dari masalah 58583 .

Fitur serupa ada di GitHub, tetapi melibatkan pembuatan garpu pribadi khusus, yang disebut " penasihat keamanan pengelola ".

VONC
sumber
0

Seperti disebutkan dalam jawaban sebelumnya, keduanya memiliki tujuan yang hampir sama. Secara pribadi saya suka git rebase dan menggabungkan permintaan (seperti pada gitlab). Dibutuhkan beban dari peninjau / pemelihara, memastikan bahwa sementara menambahkan permintaan menggabungkan, cabang fitur mencakup semua komit terbaru yang dilakukan pada cabang utama setelah cabang fitur dibuat. Berikut ini adalah artikel yang sangat berguna menjelaskan rebase secara detail: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Muhammad Shahbaz
sumber