Estou no master e fiz rebase -i <my_branch>
Entendi:
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.
#
Eu gostaria de escolher alguns commits, não todos, pois alguns deles não são bem-vindos. Além disso, como você trabalha quando deseja manter alguns arquivos ou alterações sempre 'locais' para algum branch? Existe algum ajudante como .gitignore
?
HEAD~*
sintaxe funcionou para mim, mas o primeiro não.rebase -i
sem um intervalo de commits não exibirá nenhum commit. para realocar os últimos, digamos, 7 commits, use o seguinte:tenha cuidado, porém, para que isso reescreva a história. não faça isso, se os commits já foram enviados
à sua segunda pergunta: tem um ramo com as alterações (basicamente um ramo de configuração) e regularmente mesclar os outros ramos para isso. desta forma, as mudanças não irão para outros ramos
fonte
Quando você está usando
git rebase -i
, normalmente você tem que especificar, desde qual commit você quer realizar o rebase. Então, se, por exemplo, você deseja remover alguns dos commits entre os últimos 10 para o branch atual, você faria:fonte
Como outros mencionaram, você precisa especificar um intervalo de confirmação.
(Supondo que você esteja no mesmo ramo que o commit a ser editado) -
Para especificar os commits, você pode usar as abreviações HEAD ~ 5 ou usar a soma de verificação sha (que você pode usar
git log
)Na verdade, qualquer commit servirá se for anterior / ancestral aos commits que você deseja deletar / editar / reformular na árvore. Isso irá listar todos os commits desde
<latest-commit-to-be-retained>
o editor (definido em sua configuração git). Da lista, para deletar um commit, apenas delete aquela linha em particular, salve e saia (vi habbits :)) do arquivo + editor, e façagit rebase --continue
Para a segunda resposta, eu concordo com o knittl
fonte