Saya di master dan saya lakukan rebase -i <my_branch>
Mendapatkan ini:
noop
# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Saya ingin memilih beberapa tidak semua karena beberapa di antaranya tidak diterima. Juga bagaimana Anda bekerja ketika Anda ingin menyimpan beberapa file atau perubahan selalu 'lokal' ke beberapa cabang? Apakah ada penolong seperti itu .gitignore
?
HEAD~*
sintaks berhasil untuk saya tetapi yang pertama tidak.rebase -i
tanpa rentang komit tidak akan menampilkan komit apa pun. untuk me-rebase yang terakhir, katakanlah, 7 komit, gunakan yang berikut:Berhati-hatilah karena ini akan menulis ulang sejarah. jangan lakukan itu, jika komit sudah didorong
untuk pertanyaan kedua Anda: miliki cabang dengan perubahan Anda (pada dasarnya adalah cabang konfigurasi) dan secara teratur gabungkan cabang lain ke dalamnya. dengan cara ini perubahan tidak akan berpindah ke cabang lain
sumber
Saat Anda menggunakan
git rebase -i
, Anda biasanya harus menentukan, sejak komit mana yang Anda inginkan untuk melakukan rebase. Jadi, jika, misalnya, Anda ingin menghapus beberapa komit di antara 10 terakhir ke cabang saat ini, Anda akan melakukan:sumber
Seperti yang telah disebutkan orang lain, Anda perlu menentukan rentang komit.
(Dengan asumsi bahwa Anda berada di cabang yang sama dengan komit untuk diedit) -
Untuk menentukan komit, Anda dapat menggunakan HEAD ~ 5 singkatan atau menggunakan sha checksum (yang bisa Anda dapatkan
git log
)Sebenarnya setiap komit akan dilakukan jika itu adalah prior / leluhur dari komit yang ingin Anda hapus / edit / reword di pohon. Ini akan mencantumkan semua komit sejak
<latest-commit-to-be-retained>
di editor (ditentukan dalam konfigurasi git Anda). Dari daftar, untuk menghapus komit, hapus saja baris tersebut, simpan dan keluar (vi habbits :)) file + editor, dan lakukangit rebase --continue
Untuk jawaban kedua, saya setuju dengan knittl
sumber