Eu fiz uma solicitação de pull, mas depois fiz alguns commits no projeto localmente que acabou poluindo minha solicitação de pull, tentei removê-la, mas sem sorte.
Eu encontrei algumas perguntas semelhantes no StackOverflow, mas não consigo aplicar o que está lá. É minha primeira solicitação de pull no GitHub, então é meio estranho para mim como tudo isso funciona.
O commit destacado é aquele que preciso manter e remover todas as outras coisas. Tornou-se o quarto commit da história porque eu fiz algumas coisas de mesclagem.
Alguém pode explicar o que está acontecendo e como resolver esse problema?
git
github
pull-request
humazed
fonte
fonte
what branch
= o branch em que você está trabalhando,onto what branch
= o branch para o qual você está puxando o pedidoRespostas:
Você tem várias técnicas para fazer isso.
Este post - leia a parte sobre a reversão irá explicar em detalhes o que queremos fazer e como fazer.
Aqui está a solução mais simples para o seu problema:
O comando revert criará um novo commit com o desfazer do commit original.
fonte
As pessoas não gostariam de ver um commit errado e um commit de reversão para desfazer as alterações do commit errado. Isso polui a história do commit.
Aqui está uma maneira simples de remover o commit errado em vez de desfazer as alterações com um commit de reversão.
git checkout my-pull-request-branch
git rebase -i HEAD~n
// onden
é o número dos últimos commits que você deseja incluir no rebase interativo.pick
pordrop
para commits que você deseja descartar.git push --force
fonte
git push origin HEAD:myBranch --force
. Mas, de outra forma, é ótimo e útil.Se você está removendo um commit e não quer manter suas alterações, @ferit tem uma boa solução.
Se você deseja adicionar esse commit ao branch atual, mas não faz sentido fazer parte do pr atual, você pode fazer o seguinte:
git rebase -i HEAD~n
git reset HEAD^ --soft
para descomprimir as alterações e colocá-las de volta em um estado de teste.git push --force
para atualizar o branch remoto sem seu commit removido.Agora você terá removido o commit de seu controle remoto, mas ainda terá as alterações localmente.
fonte
Então faça o seguinte,
Vamos dizer que o nome do seu branch é my_branch e este tem os commits extras.
git checkout -b my_branch_with_extra_commits
(Manter este ramo salvo com um nome diferente)gitk
(Abre o console git)git checkout my_branch
gitk
(Isso abrirá o console git)reset branch to here
"git pull --rebase origin branch_name_to _merge_to
git cherry-pick <SHA you copied in step 3. >
Agora olhe para o histórico de commits do branch local e certifique-se de que está tudo certo.
fonte
Isso é o que me ajudou:
Crie uma nova filial com a existente. Vamos chamar o existente
branch_old
e o novo debranch_new
.Redefina
branch_new
para um estado estável, quando você não teve nenhum problema de commit. Por exemplo, para colocá-lo em seu nível de mestrado local, faça o seguinte:git reset —hard master git push —forçar origem
cherry-pick
os commits debranch_old
parabranch_new
git push
fonte