Apakah ada cara untuk mengembalikan komit sehingga salinan lokal saya menyimpan perubahan yang dibuat dalam komit itu, tetapi mereka menjadi perubahan yang tidak berkomitmen pada copy pekerjaan saya? Mengembalikan komit membawa Anda ke komit sebelumnya - Saya ingin menyimpan perubahan yang dibuat tetapi saya mengikatnya ke cabang yang salah.
Ini belum didorong, hanya dilakukan.
git reset --soft
dangit reset --mixed
keduanya melakukan ini (sedikit berbeda), lihat git-resetJawaban:
Ada banyak cara untuk melakukannya, misalnya:
jika Anda belum mendorong komit ke publik:
Itu saja, perubahan komit Anda akan berada di direktori kerja Anda, sedangkan komit TERAKHIR akan dihapus dari cabang Anda saat ini. Lihat git reset man
Dalam kasus Anda lakukan dorongan publik (pada cabang yang disebut 'master'):
kembalikan komit secara normal dan tekan
sekarang jika Anda ingin memiliki perubahan itu saat Anda melakukan perubahan lokal di copy pekerjaan Anda ("sehingga salinan lokal Anda menyimpan perubahan yang dibuat di komit itu") - hanya mengembalikan opsi komit kembali dengan
--no-commit
:Saya telah membuat contoh kecil: https://github.com/Isantipov/git-revert/commits/master
sumber
reset
perintah pertama yang disebutkan mengatakan "lembut" reset ke 1 rev sebelum head, yang mempertahankan semua perubahan lokal. ini tidak segera jelas bagi saya untuk digunakan dalam SourceTree. pastikan saja Anda mengatur ulang dengan lembut ke rev sebelumnya, bukan rev yang Anda coba setel ulang"Already up to date"
ketika melakukan penggabungan.Jika Anda mendorong perubahan, Anda bisa
undo
dan memindahkan file kembali ke panggung tanpa menggunakan cabang lain.Ini akan membuat file tambalan yang berisi perubahan cabang terakhir. Kemudian mengembalikan perubahan. Dan akhirnya, terapkan file tambalan ke pohon kerja.
sumber
rm patch
jugaUntuk kasus ini: "Ini belum didorong, hanya dilakukan ." - jika Anda menggunakan IntelliJ (atau JetBrains IDE lainnya) dan Anda belum mendorong perubahan, Anda dapat melakukan selanjutnya.
Selesai
Ini akan "membatalkan komitmen" perubahan Anda dan mengembalikan status git Anda ke titik sebelum komit lokal terakhir Anda. Anda tidak akan kehilangan perubahan yang Anda buat.
sumber
git reset --soft "HEAD^"
di Windows, btw. :)Bagi saya kebanyakan hal itu terjadi ketika saya mendorong perubahan ke cabang yang salah dan menyadarinya nanti. Dan pekerjaan berikut di sebagian besar waktu.
sumber
2020 cara sederhana:
Komit hash dari commit terakhir yang ingin Anda pertahankan.
sumber
git checkout branch_name
git merge --abort
status git
git reset --barang asli / branch_name
sumber