Git mesclar tags HEAD esquerda em meus arquivos

Eu tentei mesclar o arquivo na linha de comando com o Git, quando uma mensagem de erro apareceu informando que a mesclagem foi interrompida.

Eu pensei que este era o fim, mas depois percebi que existem marcas nos meus arquivos. Por exemplo:

 start = expression validchar = [0-9a-zA-Z_?!+\-=@#$%^ integer = <<<<<<< HEAD digits:[0-9]+ { return digits.join(""); } ======= sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } >>>>>>> gh-pages 

Os arquivos não foram editados por mim e as linhas exibidas são inseridas com:

  • Cabeça depois de menos caracteres ( <<<<<<< HEAD )
  • linhas de código modificadas
  • string de sinais de igual ( ======= )
  • nova versão do código
  • outra linha começando com caracteres maiores que o nome e o nome do tópico ( >>>>>>> gh-pages )

O pior é que o conteúdo do arquivo não está mais em ordem. Alguém sabe como eu vou retornar esses arquivos, e as alterações que fiz nas ramificações gh são mescladas na ramificação principal?

68
18 мая '12 в 20:41 2012-05-18 20:41 tecla inferior é definida 18 de maio , '12 at 8:41 pm 2012-05-18 20:41
@ 5 respostas

Estes são marcadores de conflito . Você ainda está no processo de mesclagem, mas havia algumas partes que o Git não podia mesclar automaticamente. Você deve editar manualmente as partes para que elas sejam e, em seguida, registre os resultados.


Por exemplo, no seu caso particular, você provavelmente deseja resolvê-lo da seguinte maneira (note - as setas / texto à direita são apenas minhas anotações, não o que você digita no arquivo):

 integer = <<<<<<< HEAD <-+ remove the bits here digits:[0-9]+ | { return digits.join(""); } | ======= <-+ sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } >>>>>>> gh-pages <-- and this 

e assim você salva o arquivo como ...

 integer = sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } 
75
18 мая '12 в 20:44 2012-05-18 20:44 a resposta é dada Amber 18 de maio, '12 at 20:44 2012-05-18 20:44

Comece com o "status git" para descobrir o que você tem. Se você interrompeu a mesclagem (ou alterou a mesclagem) e tem arquivos conflitantes no diretório de trabalho, algo deu errado. O status do Git lhe dirá onde você está. Depois disso, você tem várias opções. Você deve ativar a fixação de mesclagem manualmente, o que pode ser uma tarefa difícil, ou usar uma ferramenta como:

 git mergetool 

A ferramenta de mesclagem funcionará se seus arquivos estiverem listados como mesclagem necessária.

Você também pode seguir um destes procedimentos:

border=0
 git checkout --ours -- /path/to/conflicted-file # this is probably the one you want git checkout --theirs -- /path/to/conflicted-file 

Você pode ver diferentes versões usando a sintaxe: 1: nome do arquivo. Veja aqui uma explicação. Mas todos os itens acima assumem que "status git" mostra arquivos conforme necessário para a mesclagem.

Finalmente, você sempre pode:

 git reset --hard # sounds like --hard is what you need but check other options 
19
18 мая '12 в 22:10 2012-05-18 22:10 a resposta é dada por GoZoner 18 de maio '12 às 10:10 pm 2012-05-18 22:10

Todas as respostas estão corretas, mas se você quiser que o Autorize todos os rótulos de conflito e queira alterar automaticamente os arquivos de armazenamento do HEAD, poderá criar seu próprio script bash como: -

Script de Amostra:

# vim /usr/sbin/solve.git

(adicione próximo)

 #!/bin/bash for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .) do sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f sed -i -e '/^>>>>>>> /d' $f echo "$f Fixed" done git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify 

# chmod 755 /usr/sbin/solve.git

apenas execute-o em seu repositório / caminho do GIT para permitir:

$ cd <path_to_repo>
$ solve.git

Nota - As extensões de arquivo acima mencionadas são php, css, js, html, svg e txt.

1
a resposta é dada ao Sr. 05 мая '16 в 14:13 2016-05-05 14:13 Pundir 05 May '16 em 14:13 2016-05-05 14:13

Eu procedo dessa questão . E eu queria algum tipo de método automatizado de combinar metade dos arquivos em vez de editar manualmente os arquivos (como sugerido em outras respostas, o que não é muito conveniente para mim). Então, foi o que eu finalmente fiz através do netbeans, mas você pode fazê-lo através da linha de comando.

Agora, lembre-se, ele só funciona se imediatamente após a merge->add->commit você entender que estragou tudo e deseja repetir o processo.

PASSO 1: Redefinir para o commit anterior.

 git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e 

PASSO 2: tente mesclar o ramo

 git merge --ff origin/feature/YOUR-Branch_here 

Nesta fase, você será solicitado para uma janela de mesclagem se você estiver usando uma interface gráfica. e então você pode continuar como de costume.

0
11 дек. A resposta é dada por Mohd Abdul Mujib em 11 de dezembro. 2018-12-11 19:14 '18 às 19h14 de 2018-12-11 19:14

No Atom, eu tive um problema com o fato de que alguns arquivos não salvaram conflitos de mesclagem resolvidos em disco, então eu tive que clicar manualmente em "salvar". Demorei algum tempo para entender.

0
06 апр. Resposta dada por Timar Ivo Batis em 06 Abr 2018-04-06 00:57 '18 às 0:57 2018-04-06 00:57