Jadi saya sedang mengerjakan proyek dengan orang lain, dan ada banyak garpu github yang sedang dikerjakan. Seseorang baru saja memperbaiki untuk suatu masalah dan saya bergabung dengan garpunya, tetapi kemudian saya menyadari bahwa saya dapat menemukan solusi yang lebih baik. Saya ingin mengembalikan komit yang baru saja saya buat. Saya mencoba melakukan ini dengan git revert HEAD
tetapi itu memberi saya kesalahan ini:
fatal: Komit <SHA1> adalah gabungan tetapi opsi -m tidak diberikan.
Apa artinya? Ketika saya bergabung dan berkomitmen, saya menggunakan opsi -m untuk mengatakan "Digabung dengan <username>".
Apa yang saya lakukan salah di sini?
sumber
git cat-file -p [MERGE_COMMIT_ID]
akan menampilkan cabang induk secara berurutan. Yang pertama terdaftar adalah-m 1
, yang kedua-m 2
.git revert [HASH] -m 2
mengatakan kepada saya Di cabang 1.x-1.x tidak ada komit, direktori kerja bersih tapi komit saya tidak dikembalikan.Katakanlah orang lain membuat bar di atas foo, tetapi Anda menciptakan baz sementara itu dan kemudian bergabung, memberikan sejarah
Catatan: git lola adalah alias yang tidak standar tetapi bermanfaat.
Tidak ada dadu dengan
git revert
:Charles Bailey memberikan jawaban yang sangat baik seperti biasa. Menggunakan
git revert
seperti padasecara efektif menghapus
bar
dan menghasilkan riwayatTapi saya curiga Anda ingin membuang komit gabungan:
Seperti yang didokumentasikan dalam
git rev-parse
manualjadi sebelum memanggil
git reset
,HEAD^
(atauHEAD^1
) adalah b7e7176 danHEAD^2
c7256de, yaitu , masing-masing orang tua pertama dan kedua dari gabungan tersebut melakukan.Hati-hati dengan
git reset --hard
karena dapat menghancurkan pekerjaan.sumber
lola
perintah git Anda:git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"
Saya punya masalah ini, solusinya adalah dengan melihat grafik commit (menggunakan gitk) dan melihat bahwa saya memiliki yang berikut:
Saya mengerti sekarang yang ingin saya lakukan
Ini karena
-m 1
akan menggabungkan berdasarkan induk biasa di mana sebagai-m 2
penggabungan berdasarkan cabang y, itulah yang saya ingin ceri-pilih.sumber
git-revert
, tentang apa pertanyaan ini.-m
opsi, bukan hanya tentanggit merge
. Yaitu, alasan di balik penggunaan-m
opsi tampaknya sama untuk reverts dan cherry-picks. Jika itu tidak benar, beri tahu kami. Karena saya belum menemukan pertanyaan lain yang secara khusus membahas penggunaan cherry-pick, terima kasih atas jawaban ini, yang mungkin mengarahkan google untuk membantu saya menemukan pertanyaan ini dan diskusi yang bermanfaat dan relevan!