Mengapa git 'permintaan tarik' tidak disebut 'permintaan push'?

451

Terminologi yang digunakan untuk menggabungkan cabang dengan repositori resmi adalah 'permintaan tarik'. Ini membingungkan, karena sepertinya saya meminta untuk mendorong perubahan saya ke repositori resmi.

Mengapa itu disebut permintaan tarik dan bukan permintaan push?

Alejandro Sanz Díaz
sumber
45
Bayangkan sebuah pohon besar yang hidup. Pohon itu terlalu kokoh untuk mendorong cabang ke dalam, sebagai gantinya Anda harus meminta pohon untuk menarik cabang ke dalam batang, memperkuatnya.
Luke
2
Jika menggunakan repositori jarak jauh seperti gitihub, salah satu perintah terakhir yang akan dijalankan pengelola dalam memenuhi permintaan melalui baris perintah adalah git push. Bagi saya yang mengatakan itu semua ... (ya, mereka mungkin mengeluarkan git pull, kemudian git push, tetapi push itu diminta dan inilah yang akhirnya dilakukan)
ebyrob
61
GitLab memanggil mereka merge requests. Jauh lebih jelas, IMHO. :)
U007D
1
duplikat: stackoverflow.com/questions/14817051/…
Timothy Swan

Jawaban:

377

Jika Anda memiliki perubahan kode di repositori Anda, dan ingin memindahkannya ke repositori target, maka:

  • "Push" adalah Anda memaksakan perubahan yang ada di repositori target ( git push).
  • "Tarik" adalah repositori target meraih perubahan Anda untuk hadir di sana ( git pulldari repo lain).

"Tarik permintaan" adalah Anda meminta repositori target untuk mengambil perubahan Anda.

"Permintaan push" akan menjadi repositori target yang meminta Anda untuk mendorong perubahan Anda.

Sven
sumber
21
ini telah menjadi masalah bagi saya juga dengan konvensi penamaan: D & u hanya membuatnya lebih mudah untuk dipahami. untuk memikirkannya dengan cara yang sama bagaimana mata uang membeli / menjual di bank bekerja.
nsuinteger
Saya pikir Anda perlu mendefinisikan kembali definisi "Tarik" Anda, karena ada yang membingungkan tentang "repositori target", "perubahan Anda". Mungkin Anda ingin mengatakan, bahwa "repositori Anda mengambil perubahan dari repositori target"?
MrPisarik
9
Gagasan utamanya adalah bahwa terminologi "push" / "pull" digunakan untuk mengidentifikasi pihak yang akhirnya memutuskan apakah transfer terjadi, bukan pihak yang membuat informasi yang ditransfer.
Jess Riedel
3
Tergantung pada siapa yang Anda minta, jika itu adalah tim Anda, "permintaan push" lebih masuk akal, jika itu adalah repositori jarak jauh Anda sepenuhnya benar.
A77
2
Saat bekerja dengan server Git pusat dan swasta di sebuah perusahaan, biasanya Anda dapat mendorong cabang baru ke dalamnya, dan meminta peninjauan kode dan bergabung dari rekan kerja Anda. Jadi "tarik permintaan" untuk alur kerja ini secara teknis tidak benar, tetapi ternyata itu istilah yang dipilih oleh semua orang dan desainer GUI.
Sven
88

Saat Anda mengirim permintaan tarik, Anda meminta (meminta) pemilik repo resmi untuk menarik beberapa perubahan dari repo Anda sendiri. Karenanya "tarik permintaan".

JB Nizet
sumber
2
tetapi pemilik akan mengeluarkan git gabungan setelah menyetujuinya
Jervie Vitriolo
2
Git pull adalah fetch dan merge dikombinasikan, jadi pull sudah mengimplikasikan gabung.
Xiong Chiamiov
37

tl; dr karena saya tidak diizinkan untuk mendorong, saya akan dengan baik membuat permintaan kepada pemilik repo sehingga mereka memutuskan untuk menarik


Siapa yang bisa mendorong kode ke repositori?

Jika ada orang (mungkin jahat atau tidak berpendidikan atau tidak dikenal) dapat datang dan mengatakan di sini saya hanya mendorong ini ke cabang master Anda dan mengacaukan semua kode Anda HAHAHA! ?

Tentunya Anda tidak ingin dia melakukan itu. Secara default jaring pengaman diatur sehingga tidak ada yang bisa mendorong ke repo Anda. Anda dapat mengatur orang lain sebagai kolaborator , lalu mereka bisa mendorong. Anda akan memberikan akses seperti itu kepada orang yang Anda percayai.

Jadi, jika Anda bukan kolaborator dan mencoba mendorong, Anda akan mendapatkan beberapa kesalahan yang menunjukkan Anda tidak memiliki izin.


Jadi bagaimana mungkin pengembang lain mendorong ke repo mereka tidak diberi izin untuk mendorong?
Anda tidak dapat memberikan akses ke semua orang, namun Anda ingin memberi orang lain outlet / titik masuk sehingga mereka dapat membuat 'permintaan kepada pemilik repo untuk menarik kode ini ke dalam repo'. Sederhananya dengan membuat repo dapat diakses, mereka dapat memotongnya ... membuat perubahan pada garpu mereka sendiri. Dorong perubahan mereka ke garpu sendiri . Setelah itu di repo jarak jauh mereka sendiri:

Mereka membuat permintaan tarik dari garpu mereka dan pemilik repo hulu (yang Anda tidak bisa mendorong langsung ke) akan memutuskan apakah akan menggabungkan permintaan tarik atau tidak.


Juga pertanyaan semi-terkait Saya sarankan membaca Apa yang sebenarnya terjadi pada dorongan git? Mengapa push git tidak dianggap seperti penggabungan git?

Madu
sumber
4
untuk orang yang tidak menyadari bahwa ada perbedaan izin antara mendorong dan menarik, jawaban ini sangat masuk akal.
buddie
29

Tarik Permintaan: Saya Meminta Anda untuk Menarik milik saya.

hepidad
sumber
7
Saya sebagai pengguna melihatnya dari sudut pandang saya, bukankah seharusnya "Saya meminta untuk mendorongnya kepada Anda?" I >>> You - Anda mengubah titik referensi dua kali dalam konteks yang sama ... alih-alih I >>>> You <<<< Mine
Marin
1
Jawaban ini paling masuk akal.
shivams
Jeruk lemon yang mudah
Ivan Ivković
Saya meminta Anda untuk menarik milik saya ..... dari mana ??? Saya mengerti ini akan dari garpu proyek asli? atau dari salinan lokal?
KansaiRobot
5

Saya ingin mendorong sesuatu ke repo orang lain.

Saya tidak memiliki izin untuk mendorong (atau menarik, dalam hal ini).

Pemilik / kolaborator memiliki izin. Mereka dapat menarik serta mendorong. Saya tidak bisa mendorong.

Jadi, saya meminta mereka untuk melakukan penarikan dari saya - yang secara tidak langsung berarti bahwa saya meminta mereka untuk menerima dorongan saya.

Jadi, tidak ada permintaan untuk push. Hanya untuk tarikan. Dan untuk menerima dorongan.

Oleh karena itu, permintaan 'tarik'. Dan bukan permintaan 'dorong'.

pengguna11705414
sumber
4

Kata "Permintaan" adalah kunci dalam tindakan ini. Anda juga bisa menganggapnya dengan mengatakan, "Saya punya permintaan agar Anda mengambil pekerjaan saya, apakah Anda menerima?" - "Permintaan Tarik".

Awalnya agak membingungkan, tetapi pada akhirnya masuk akal.

Kyzer
sumber
1

Untuk memahami ini lebih baik dan mengingatnya selamanya, Anda perlu membayangkannya.

Bayangkan pohon besar yang hidup {sebagai tempat penyimpanan Anda}. Pohon terlalu kokoh untuk mendorong cabang ke dalam atau menambahkan bagian baru {melambangkan membuat cabang baru atau Anda mendorong kode di dalamnya}, alih-alih Anda harus meminta pohon untuk menarik cabang ke dalam bagasi atau memiliki perubahan dari Anda.

Istilah "permintaan tarik" berasal dari sifat terdistribusi. Alih-alih hanya mendorong perubahan Anda ke dalam repositori (seperti yang akan Anda lakukan dengan repositori terpusat, misalnya dengan Subversion), Anda menerbitkan perubahan Anda secara terpisah dan meminta pengelola untuk menarik perubahan Anda. Pemelihara kemudian dapat melihat perubahan dan melakukan tarik kata.

Jadi pada dasarnya Anda "meminta" orang-orang dengan akses tulis ke repo yang ingin Anda berkontribusi, "Tarik" dari repo Anda.

Tarik permintaan memungkinkan Anda memberi tahu orang lain tentang perubahan yang Anda mendorong ke cabang di repositori di GitHub. Setelah permintaan tarik dibuka, Anda dapat mendiskusikan dan meninjau kemungkinan perubahan dengan kolaborator dan menambahkan komitmen tindak lanjut sebelum perubahan Anda digabungkan ke cabang dasar. Penjelasan Github

SPidey
sumber
0

Saya pikir ini terminologi yang konyol karena saya ingin berpikir bahwa saya ingin MENDAPATKAN sesuatu kepada Anda dan tidak berpikir sebaliknya meminta orang lain untuk menambah barang saya. Karena itu harus diubah menjadi PUSH REQ. karena aku yang aktif. Panah mengarah ke arah lain dimulai dengan saya dan bukan Gufi di ujung lainnya. MENURUT OPINI SAYA.

Michael Pauli
sumber
0

Pikirkan begini. Repositori lokal vs repositori jarak jauh.

  • Saat Anda Push dari Lokal. ( git push) - dengan kata lain, repositori jarak jauh menarik kode dari Anda (Lokal).

Anda meminta sesuatu. Jadi, tanya dirimu,

  • Anda ingin Repositori jarak jauh menarik kode dari Anda? - Tarik Permintaan.
Jin Lim
sumber
Saya pikir penting untuk membuat perbedaan bahwa Anda tidak dapat membuat permintaan push. Jika Anda bisa mendorong dan melakukannya, itu bukan permintaan, itu akan bergabung dengan master. Permintaan tarik menuju repositori git hub adalah Anda meminta agar kode Anda digabungkan.
James
Saya hanya menggunakan ini sebagai contoh. Tentu saja, Github dapat mendorong kode tersebut. tapi saya akan mengedit jawaban saya.
Jin Lim
0

Saya khawatir sebagian besar jawaban ini menjawab pertanyaan Apa maksudnya 'permintaan tarik'? atau Apa yang akan 'mendorong permintaan' artinya? daripada pertanyaan OP: Mengapa itu disebut permintaan tarik dan bukan permintaan push?

Biasanya penggantian pertanyaan semacam ini dapat diterima, tetapi dalam kasus ini jelas bahwa OP mengetahui jawaban atas pertanyaan penggantian ini, jadi menjawabnya tidak sangat membantu.

Hanya orang-orang di GitHub yang menciptakan istilah yang tahu pasti. Namun tampaknya jelas bahwa pilihan terminologis ini mencerminkan sesuatu seperti sudut pandang berikut mengenai fenomena "perubahan datang ke repositori dari luar": Pemelihara melakukan tindakan (tarik) .

Namun, permintaan juga merupakan tindakan, dan pelaku tindakan itu bukan pengelola, melainkan pengirim (yang telah melakukan lebih banyak tindakan, yaitu pekerjaan). Jadi istilah 'permintaan tarik' menciptakan kebingungan tentang siapa agennya . Pada akhirnya kebingungan muncul karena sifat rekursif dari suatu permintaan: Permintaan adalah tindakan oleh agen utama dan permintaan untuk tindakan di masa depan oleh agen kedua.

Situasinya cukup analog dengan konstruksi linguistik sekarang-umum seperti "kami membangun rumah kami" (digunakan sebagai pengganti "kami membayar orang lain untuk membangun rumah kami"), di mana tanggung jawab untuk tindakan utama dialihkan dari agen asli yang jelas ke agen sekunder yang memenuhi peran sosial manajerial.

Orang mungkin menyimpulkan dari sini bahwa alasan untuk pilihan terminologis adalah legitimasi dari sudut pandang bahwa pekerjaan manajerial adalah pekerja kelas satu . Selain itu alasan kebingungan tentang pilihan terminologis ini mungkin karena pekerja non-manajer secara alami memiliki sudut pandang yang berbeda.

jimmymathews
sumber