Aplicável para Eclipse Luna + Eclipse Git 3.6.1
EU,
- repositório git clonado
- fez algumas mudanças no código-fonte
- mudanças em estágios do Git Staging View
- finalmente, comprometa e empurre!
E eu enfrentei esse problema com EGit e aqui está como eu consertei.
Sim, alguém confirmou as alterações antes de eu confirmar minhas alterações. Portanto, as alterações são rejeitadas. Após esse erro, as alterações são realmente confirmadas no repositório local. Eu não queria apenas fazer Pull
as mudanças porque queria manter linear history
conforme apontado em - Em quais casos `git pull` pode ser prejudicial?
Então, eu executei as seguintes etapas
- da perspectiva do Repositório Git, clique com o botão direito no
projeto Git em questão
- select
Fetch from Upstream
- busca atualizações remotas (refs e objetos), mas nenhuma atualização é feita localmente. para mais informações, consulte Qual é a diferença entre 'git pull' e 'git fetch'?
- select
Rebase...
- abre um pop-up, clique em Preserve merges during rebase
ver por que
O que exatamente o "rebase --preserve-merges" do git faz (e por quê?)
- Clique em
Rebase button
- se houver / houver um
conflict(s)
, vá para a etapa 6, caso contrário, etapa 11
- um
Rebase Result
pop - up aparecerá, basta clicar emOK
file comparator
abriria, você precisa modificar left side file
.
- quando terminar de mesclar as alterações corretamente, vá para a
Git Staging
visualização
stage the changes
. ieadd to index
- na mesma vista, clique em
Rebase
-> Continue
. repita 7 a 10 até que todos os conflitos sejam resolvidos.
- da
History
visualização, selecione sua linha de confirmação e selecionePush Commit
- marque a
Rebase Commits of local.......
caixa de seleção e clique em próximo. consulte o porquê - Git: rebase no branch de desenvolvimento do upstream
- Clique em
Finish
Nota: se você tiver múltiplos commits de repositório local, você precisa comprimi-los em um commit para evitar múltiplos merges.