Eu sou muito novo no git e gostaria de saber como eu deveria fazer uma fusão onde no repositório local eu apaguei vários arquivos no branch master, mas esses arquivos existem dentro do branch master remoto.
Depois de fazer git-merge, ele mostra os conflitos que ocorreram.
Usando git gui, ele mostra que o arquivo local foi excluído, enquanto o arquivo do branch remoto tem conteúdo.
Como você evita que esses arquivos entrem em conflito? Existe uma maneira simples de usar git gui?
Muito Obrigado
Respostas:
Você deve resolver os conflitos como achar adequado. Se o arquivo realmente deve ser removido e você vai publicar essa alteração na origem, remova-o novamente:
Se o arquivo ainda deve ser rastreado, adicione-o (a versão na árvore de trabalho será a versão de origem):
Depois de fazer qualquer um desses procedimentos para resolver o conflito, comprometa a fusão.
fonte
cd
para o diretório egit rm *.ext
. Seu shell (não Git) se expande*.ext
para todos os nomes de arquivos correspondentes.git rm
não tem-i
bandeira.git rm *-suffix.ext
? Mesma diferença. Se você estiver tendo problemas para descobrir como usar curingas do shell, pergunte em unix.stackexchange.com. Se você sabe com certeza que o que deseja não pode ser feito com globbing, userm -i
e sigagit add -u
para selecionar as exclusões.-s recursive -X ours
, por que ainda é necessáriogit rm
egit add
?Como dica adicional, além da resposta aceita, em um "excluído por nós" , se você gostaria de ver as alterações que foram feitas no arquivo excluído para que você possa aplicar essas alterações em outro lugar que você pode usar:
Se for um cenário "excluído por eles" e você gostaria de ver as alterações para poder aplicá-las em outro lugar, você pode usar:
fonte
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(veja minha outra resposta).Na GUI do Git, você seleciona o arquivo em conflito e clica com o botão direito do mouse na área de texto principal onde o texto em conflito é mostrado.
No menu de contexto que aparece, você pode escolher ir com "Remoto" ou ir com "Local". Portanto, se um arquivo for excluído remotamente, você pode escolher "Remoto" para propagar a exclusão localmente e vice-versa.
Levei um mês para descobrir ... seria bom se a GUI do Git realmente tivesse documentação ...
fonte
A resposta mais bem avaliada se concentra na maneira de resolver o conflito.
Antes disso, você provavelmente deseja saber o que o controle remoto mudou nos arquivos removidos localmente.
Para fazer isso, você pode ver as mudanças com:
De https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
fonte
git diff --base
stackoverflow.com/a/60484874/470749No EGit também encontrei problemas. Minha solução foi:
fonte
Conforme declarado nesta resposta útil a uma pergunta relacionada , você pode usar
git mergetool
para iniciar um diálogo onde pode selecionar se deseja obter a versão modificada ou excluída do (s) arquivo (s).fonte