Saya melakukan permintaan tarik tetapi setelah itu saya membuat beberapa komitmen pada proyek secara lokal yang berakhir mencemari permintaan tarik saya, saya mencoba untuk menghapusnya tetapi tidak berhasil.
Saya menemukan beberapa pertanyaan serupa di StackOverflow tetapi saya tidak dapat menerapkan apa yang ada di sana. Ini permintaan tarik pertama saya di GitHub jadi agak aneh bagi saya bagaimana semua ini bekerja.
Komit yang disorot adalah yang saya perlukan untuk menyimpan dan menghapus semua hal lainnya. Itu menjadi komit keempat dalam sejarah karena saya membuat beberapa barang penggabungan.
Bisakah seseorang menjelaskan apa yang terjadi dan bagaimana cara memperbaiki masalah ini?
git
github
pull-request
humazed
sumber
sumber
what branch
= cabang yang Anda kerjakan,onto what branch
= cabang yang Anda mintaJawaban:
Anda memiliki beberapa teknik untuk melakukannya.
Posting ini - baca bagian tentang pengembalian akan menjelaskan secara rinci apa yang ingin kita lakukan dan bagaimana melakukannya.
Inilah solusi paling sederhana untuk masalah Anda:
Perintah revert akan membuat komit baru dengan pengurungan komit asli.
sumber
Orang tidak ingin melihat komit yang salah dan komit balik untuk mengurungkan perubahan dari komit yang salah. Ini mencemari sejarah komit.
Berikut ini cara sederhana untuk menghapus komit yang salah alih-alih membatalkan perubahan dengan komit balik.
git checkout my-pull-request-branch
git rebase -i HEAD~n
// di manan
jumlah komit terakhir yang ingin Anda sertakan dalam rebase interaktif.pick
dengandrop
untuk komitmen yang ingin Anda buang.git push --force
sumber
git push origin HEAD:myBranch --force
. Tapi sebaliknya hebat dan bermanfaat.git rebase -i HEAD~<n>
, di bagian atas file akan ada<n>
baris komit, dengan setiap baris berisi tekspick <commit id>
. Komit default kepick
, jadi untuk setiap komit yang ingin Anda hapus, ubah tekspick
menjadidrop
Jika Anda menghapus komit dan tidak ingin menyimpan perubahannya, @ferit memiliki solusi yang baik.
Jika Anda ingin menambahkan komit tersebut ke cabang saat ini, tetapi tidak masuk akal untuk menjadi bagian dari pr saat ini, Anda dapat melakukan hal berikut:
git rebase -i HEAD~n
git reset HEAD^ --soft
untuk membatalkan komitmen perubahan dan mengembalikannya ke status bertahap.git push --force
untuk memperbarui cabang jarak jauh tanpa komit yang Anda hapus.Sekarang Anda telah menghapus komit dari jarak jauh Anda, tetapi masih memiliki perubahan secara lokal.
sumber
Jadi lakukan hal berikut,
Katakanlah nama cabang Anda adalah my_branch dan ini memiliki komit ekstra.
git checkout -b my_branch_with_extra_commits
(Menjaga cabang ini disimpan dengan nama yang berbeda)gitk
(Buka konsol git)git checkout my_branch
gitk
(Ini akan membuka konsol git)reset branch to here
"git pull --rebase origin branch_name_to _merge_to
git cherry-pick <SHA you copied in step 3. >
Sekarang lihat sejarah komit cabang lokal dan pastikan semuanya terlihat bagus.
sumber
Inilah yang membantu saya:
Buat cabang baru dengan yang sudah ada. Mari kita sebut yang sudah ada
branch_old
dan yang baru sebagaibranch_new
.Setel ulang
branch_new
ke keadaan stabil, ketika Anda tidak memiliki masalah apapun lakukan sama sekali. Misalnya, untuk meletakkannya di level master lokal Anda, lakukan hal berikut:git reset —hard master git push — force origin
cherry-pick
komit daribranch_old
hinggabranch_new
git push
sumber