Jadi bayangkan hal berikut terjadi (dan kita semua menggunakan SourceTree):
- Kita semua bekerja asal / berkembang.
- Saya pergi berlibur selama seminggu.
- Rekan kerja saya telah bekerja secara lokal selama beberapa hari terakhir tanpa menggabungkan asal / mengembangkan kembali ke cabang pengembangan lokalnya.
- Dia mencoba melakukan dorongan, diberitahu bahwa dia harus bergabung terlebih dahulu, dan kemudian melakukan tarikan.
- Dia mendapat konflik, menghentikan komit otomatis setelah penggabungan dari proses.
- Dengan asumsi bahwa Git seperti SVN, rekan kerja saya membuang file "baru" dalam copy pekerjaannya dan kemudian melakukan penggabungan - menghapus file "baru" dari kepala asal / kembangkan.
- Pekerjaan dev selama berminggu-minggu berlangsung di atas revisi itu.
- Saya kembali dari liburan dan mengetahui bahwa beberapa hari pekerjaan saya hilang.
Kami semua sangat baru di Git (ini adalah proyek pertama kami yang menggunakannya), tetapi yang saya lakukan untuk memperbaikinya adalah:
- Ganti nama "kembangkan" menjadi "develop_old".
- Gabungkan develop_old ke cabang baru "develop_new".
- Setel ulang cabang develop_new ke komit terakhir sebelum penggabungan buruk.
- Cherry memilih setiap komitmen sejak saat itu, satu per satu, menyelesaikan konflik dengan tangan.
- Dorong develop_old dan develop_new hingga ke titik asal.
Pada titik ini, develop_new adalah, saya berharap, salinan "baik" dari semua perubahan kami dengan minggu-minggu berikutnya kerja layak diterapkan kembali. Saya juga mengasumsikan bahwa "terbalik komit" akan melakukan hal-hal aneh di merge, terutama karena beberapa minggu ke depan senilai bekerja didasarkan pada itu - dan karena gabungan yang berisi banyak hal yang kita lakukan ingin bersama dengan barang-barang yang kita don' t.
Saya berharap ini tidak pernah terjadi lagi, tetapi jika itu terjadi lagi, saya ingin tahu cara yang lebih mudah / lebih baik untuk memperbaiki keadaan. Apakah ada cara yang lebih baik untuk membatalkan penggabungan "buruk", ketika banyak pekerjaan telah dilakukan di repo berdasarkan penggabungan itu?
git log
format favorit Anda dengan anotasi yang sesuai tentang apa yang terjadi di berbagai commit? (Saya akan menghapus / membubuhi keterangangit log --graph --pretty=oneline --abbrev-commit
dan pergi dari sana)