Mengganti nama cabang saat permintaan tarik

101

Di Github, Anda dapat membuat permintaan penarikan untuk menambahkan fungsionalitas ke proyek. Kontribusi seseorang harus dalam cabang yang, jika permintaan diterima, akan digabungkan ke dalam cabang master (atau yang serupa) dari proyek.

Sekarang, saya mengajukan permintaan tarik ke Github dan kontribusi saya ada di cabang bernama patch-1. Saya dapat mengubah nama cabang secara lokal dengan

git branch -m patch-1 newname

dan pada prinsipnya saya juga dapat mengganti namanya di repo bercabang saya di Github dengan mengikuti instruksi yang ditemukan dalam jawaban ini . Ini dilakukan dalam praktik dengan menghapus cabang lama, patch-1dalam kasus saya, dan menutupnya kembali dengan nama yang berbeda newname.

Apakah diperbolehkan untuk mengganti nama cabang patch-1di repositori bercabang saya di Github ketika itu merupakan permintaan tarik? Atau menyebabkan masalah pada manajemen permintaan tarik?

Apakah ada cara untuk mengganti nama cabang di repositori bercabang di Github jika cabang itu adalah permintaan tarik?

Michele
sumber
Ya, Anda dapat melakukan ini dengan fungsionalitas GitHub "Ubah cabang dasar". Lihat jawaban saya yang diperbarui 👇
Slobodan Ilic

Jawaban:

117

"Mengganti nama" cabang jauh di git, seperti yang ditunjukkan oleh tautan yang Anda berikan, sebenarnya hanya menghapus sebuah cabang, diikuti dengan mendorong cabang baru dengan hash komit yang sama tetapi dengan nama baru. Jika Anda memiliki permintaan tarik terbuka untuk cabang patch-1, saat Anda menghapus cabang itu, permintaan penarikan akan ditutup.

Jadi, tidak, Anda tidak dapat mengganti nama cabang dengan permintaan tarik terbuka tanpa menghapus cabang dan menghapus permintaan tarik. Namun, tidak ada yang menghentikan Anda untuk melakukan itu, mendorong cabang baru dengan nama baru, dan membuat permintaan tarik baru.

arbylee
sumber
186
salah satu alasan untuk tidak melakukannya adalah kehilangan pembahasan tentang PR yang ada.
Johnny Everson
6
Saya tidak mengerti mengapa pembatasan ketat pada penggantian nama cabang sumber di PR. Perilaku menjengkelkan yang sama ada di bitbucket. Pendekatan lain akan mengedit PR dan mengubah cabang sumber ke cabang lain. Seseorang mungkin berkata "jika Anda mengubah cabang sumber, maka itu adalah PR baru". Secara teknis, ya, tetapi juga tidak ada yang mencegah pengembang untuk menyiapkan hulu dari cabang yang sama sekali berbeda dan kemudian melakukan a git push -f. PR diperbarui dengan seluruh kode baru dan masih merupakan PR yang "sama".
L.Holanda
31

Memperbarui:

Jawaban singkat:

Ya - Anda dapat melakukan ini dengan fungsi GitHub "Ubah cabang dasar"

Bagaimana cara melakukannya:

  1. Buat cabang baru secara lokal dari yang namanya ingin Anda ubah
  2. Dorong cabang baru itu ke repo jarak jauh (sekarang Anda memiliki dua cabang dengan konten yang sama tetapi nama berbeda)
  3. (hanya jika PR ditutup karena cabang asli dihapus) - Buka PR yang ditutup, klik "pulihkan cabang", buka kembali PR
  4. Pada PR pilih "Edit" dan kemudian klik dropdown untuk "Ubah cabang dasar" (pilih cabang baru yang baru saja Anda dorong)
  5. Klik "Simpan"
  6. Hapus cabang lama (opsional)

Jawaban asli

Jawaban singkat:

Tidak

Pendekatan alternatif:

  1. Buka PR baru dengan cabang baru (berganti nama)
  2. Tutup PR lama yang mereferensikan yang baru (mis. Ditutup demi #new_pr_id)
  3. Ubah deskripsi PR baru (mis., Supersedes #old_pr_id)
  4. (opsional) Beri komentar tentang diskusi yang relevan tentang PR lama

catatan:

Nama cabang jarak jauh (merupakan PR) perlu diubah karena sistem build memerlukan nama cabang yang diakhiri dengan ID tiket. Namun, PR dibuka sebelum pembuatan tiket resmi (dari spesifikasi) dan berisi diskusi yang berharga. Pendekatan yang dijelaskan adalah satu-satunya cara untuk membuat sistem yang dibangun berfungsi, dan juga tidak kehilangan informasi apa pun (meskipun ada langkah ekstra dalam melacaknya).

Slobodan Ilic
sumber
9
Cabang yang diberikan biasanya dihapus setelah digabungkan, saya pikir lebih baik untuk "mentolerir" nama yang tidak akurat untuk sementara daripada menambahkan overhead PR baru yang mengacu pada PR lama untuk tujuan melacak diskusi historis.
Neo