Saya telah mengirimkan perubahan ke proyek Open Source di Github, dan menerima komentar ulasan kode dari salah satu anggota tim inti.
Saya ingin memperbarui kode dengan mempertimbangkan komentar ulasan, dan mengirimkannya kembali. Apa alur kerja terbaik untuk melakukan ini? Dari pengetahuan git / github saya yang terbatas, saya dapat melakukan salah satu dari yang berikut:
Perbarui kode sebagai komit baru, dan tambahkan komit awal dan yang diperbarui ke permintaan tarik saya.
Entah bagaimana (??) kembalikan komit lama dari repositori saya, dan buat komit baru yang berisi semuanya, lalu ajukan permintaan tarik untuk itu?
git commit
memiliki fitur amendemen, tetapi saya dengar Anda tidak boleh menggunakannya setelah mendorong komit di luar repositori lokal Anda? Dalam hal ini saya telah membuat perubahan pada PC lokal saya dan mendorong ke cabang proyek github saya. Apakah ini boleh untuk menggunakan 'mengubah'?Sesuatu yang lain
Sepertinya opsi 2/3 akan lebih baik, karena proyek open source hanya akan memiliki satu komit dalam sejarah mereka yang akan mengimplementasikan semuanya, tetapi saya tidak yakin bagaimana melakukan ini.
Catatan: Saya tidak tahu apakah ini memengaruhi jawaban atau tidak, tetapi saya tidak melakukan perubahan di cabang terpisah, saya hanya melakukan komit di atas master
sumber
master
adalah cabang juga, jadi secara teknis tidak masalah :)Untuk memperbarui permintaan tarik
Untuk memperbarui permintaan tarik (titik # 1), satu-satunya hal yang perlu Anda lakukan adalah checkout dari cabang yang sama dengan permintaan tarik dan tekan lagi:
Opsional - Membersihkan riwayat komit
Anda mungkin diminta untuk meremas komit Anda bersama-sama sehingga riwayat repositori bersih, atau Anda sendiri ingin menghapus komit perantara yang mengalihkan perhatian dari "pesan" dalam permintaan tarikan Anda (poin # 2). Misalnya jika riwayat komit Anda terlihat seperti ini:
Merupakan ide yang bagus untuk menyatukan segala sesuatu sehingga mereka tampil sebagai satu komit:
Ini akan meminta Anda untuk memilih cara menulis ulang riwayat permintaan tarik Anda, yang berikut akan ada di editor Anda:
Untuk komit apa pun yang Anda ingin menjadi bagian dari komit sebelumnya - ubah pilih ke squash:
Dan tutup editor Anda. Git kemudian akan menulis ulang riwayat dan meminta Anda untuk memberikan pesan komit untuk komit gabungan. Ubah sesuai dan riwayat komit Anda sekarang akan singkat:
Dorong itu ke garpu Anda:
dan permintaan tarik Anda akan berisi satu komit, menggabungkan semua perubahan yang sebelumnya dibagi menjadi beberapa komit.
Mengubah sejarah pada repo publik adalah hal yang buruk
Menulis ulang sejarah dan menggunakan
git push -f
pada cabang yang, berpotensi, telah dikloning oleh orang lain adalah hal yang buruk - itu menyebabkan sejarah repositori dan checkout itu berbeda.Namun, mengubah sejarah fork Anda untuk memperbaiki perubahan yang Anda usulkan untuk diintegrasikan ke dalam repositori - adalah hal yang baik. Dengan demikian tidak ada reservasi yang menekan "kebisingan" dari permintaan tarik Anda.
Catatan tentang cabang
Pada contoh di atas, saya menunjukkan permintaan tarikan sebagai berasal dari
master
cabang fork Anda, tidak ada yang salah dengan itu tetapi hal itu menciptakan batasan tertentu seperti, jika ini adalah teknik standar Anda, hanya mampu memiliki satu PR terbuka per repositori . Namun itu adalah ide yang lebih baik untuk membuat cabang untuk setiap perubahan yang ingin Anda usulkan:sumber
git push -f
. Tidak ada banyak komentar, tapi itu sesuatu yang tidak kuharapkan.prune
tidak menghapus komitmen yang terlepas itu maka riwayatnya masih akan cocok dengan komentar PR.