Github saya memiliki 100 commit di dalamnya sekarang. Saya perlu mengembalikan repositori ke komit 80, dan menghapus semua yang berikutnya.
Mengapa? Repo ini seharusnya untuk penggabungan dari pengguna lain-lain. Sekelompok gabungan masuk sebagai komit dari saya, karena pengeditan yang berlebihan. Itu karena kesalahan label pada cabang jarak jauh saya, di mana 3 pengembang diberi label satu sama lain. Saya perlu mengatur ulang ke titik itu, dan kemudian tarik ke depan.
Saya ingin rebase, seperti dalam contoh ini: Bagaimana saya bisa menghapus komit di GitHub?
Namun, git ingin saya melakukan banyak manajemen konflik. Apakah ada cara yang lebih sederhana?
git push -f origin branch
. Saya hanya memiliki waktu yang buruk, karena saya melewatkan itu.git push origin HEAD --force
alih - alihgit push -f origin branch
karena itu memberi sayaerror: src refspec branch does not match any.
kesalahanUntuk membatalkan komit terbaru saya melakukan ini:
Pertama:
dapatkan id SHA terbaru untuk diurungkan.
Itu akan membuat komit baru yang melakukan kebalikan dari komit Anda. Kemudian Anda dapat mendorong komit baru ini untuk membawa aplikasi Anda ke keadaan sebelumnya, dan riwayat git Anda akan menunjukkan perubahan ini sesuai.
Ini bagus untuk mengulang sesuatu yang baru saja Anda lakukan, yang menurut saya lebih sering terjadi pada saya.
Seperti yang Mike katakan, Anda juga dapat melakukan ini:
sumber
git revert HEAD
akan mengembalikan komit terakhir tanpa harus mencari hash.Cara lain:
Periksa cabang yang ingin Anda kembalikan, lalu setel ulang copy pekerjaan lokal Anda kembali ke komit yang Anda inginkan menjadi yang terbaru pada server jarak jauh (semuanya setelah itu akan pergi bye-bye). Untuk melakukan ini, di SourceTree, saya mengklik kanan pada dan memilih "Reset BRANCHNAME ke komit ini".
Kemudian navigasikan ke direktori lokal repositori Anda dan jalankan perintah ini:
Ini akan menghapus semua komit setelah yang sekarang di repositori lokal Anda tetapi hanya untuk satu cabang itu.
sumber
Sebagian besar saran berasumsi bahwa Anda perlu menghancurkan 20 commit terakhir, itulah sebabnya ini berarti "menulis ulang sejarah", tetapi Anda tidak harus melakukannya.
Cukup buat cabang baru dari komit # 80 dan kerjakan cabang itu ke depan. 20 komit lainnya akan tetap di cabang yatim piatu.
Jika Anda benar-benar ingin cabang baru Anda memiliki nama yang sama, ingatlah bahwa cabang pada dasarnya hanya label. Cukup ganti nama cabang lama Anda menjadi sesuatu yang lain, lalu buat cabang baru di komit # 80 dengan nama yang Anda inginkan.
sumber
Ketika melakukan pembaruan cabang dari master, saya perhatikan bahwa saya kadang-kadang mengklik berlebihan, dan menyebabkan cabang untuk bergabung ke master juga. Menemukan cara untuk membatalkannya.
Jika komit terakhir Anda adalah penggabungan, dibutuhkan lebih banyak cinta:
git revert -m 1 KEPALA
sumber
Di github, cara mudah adalah menghapus cabang jarak jauh di UI github, di bawah tab cabang. Anda harus memastikan menghapus pengaturan berikut untuk membuat cabang dihapus:
Sekarang buat ulang di repositori lokal Anda untuk menunjuk ke titik komit sebelumnya. dan menambahkannya kembali ke repo jarak jauh.
Kemudian dorong cabang lokal ke jarak jauh
Tambahkan kembali perlindungan cabang dan cabang default, dll.
sumber