Eu estou no windows
Por várias razões, temos várias instâncias git de diferentes ramos svn.
Muitas vezes desejo corrigir um problema no repositório A, gerar um patch e aplicá-lo ao repositório B. Isso funciona bem, exceto se houver conflitos.
Ao fazer o rebaseamento, basta clicar com o botão direito na pasta e usar tortioseGit e selecionar a opção resolver. Isso traz um bom gui para me deixar trabalhar meus conflitos.
Existe alguma maneira de fazer isso com pedaços de patch rejeitados?
Aqui está minha abordagem atual para criar / aplicar os patches
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
e fazer uma fusão de 3 vias com o gui de sua escolha (tenho parcialidade para o kdiff no Windows) ...Respostas:
Para gerar seu patch, faça o seguinte:
Agora, quando você estiver pronto para aplicar os patches:
O
-3
fará uma mesclagem de três vias se houver conflitos. Neste ponto, você pode fazer umgit mergetool
, se você quiser ir a um gui ou apenas manualmente mesclar os arquivos usando vim (o padrão<<<<<<
,||||||
,>>>>>>
resolução de conflitos).fonte
--ignore-whitespace --ignore-space-change
aosgit am
demais. Eu tinha mesclagens triviais que não funcionavam sem ele.git apply -3 changes.patch
parece funcionar para mim tambémgit mergetool
. Em vez disso, tive que encontrar o commit de base que o patch original usou, aplicar em cima disso (felizmente meu repo tinha isso) e então rebase.git am -3
nemgit apply -3
vai realmente cair marcadores de conflito em meus arquivos, mesmo que eu recebo mensagens comoApplied patch to 'configure.ac' with conflicts.
eerror: patch failed: ...
. Isso está ligadogit 2.17.1
. Talvez quando alguns arquivos não puderem ser corrigidos, git reverta?Se você está frequentemente enfrentando o mesmo conjunto de conflitos ao aplicar patches, rebasing ou mesclagem, então você pode usar a função git rerere (reutilizar resolução gravada). Isso permite que você pré-defina como os conflitos devem ser resolvidos com base em como você os resolveu no passado. Consulte http://git-scm.com/blog/2010/03/08/rerere.html para obter detalhes sobre como isso funciona.
fonte
TortoiseGit tem um recurso de mesclagem que pode abrir arquivos de patch.
Tem uma foto disso aqui .
fonte
Minha abordagem é:
fonte