Mesclando Ramificações sem Check-out

(apenas para fusões de avanço rápido)

Resumo

$ git fetch . develop:master

Este mestre de avanço rápido para desenvolver sem check-out.

Explicação

Digamos que estejamos trabalhando em um branch de desenvolvimento que está à frente do master em vários commits. Portanto, nossa história é mais ou menos assim:
Precisa de avanço rápido

Agora queremos mesclar o desenvolvimento com o mestre para receber isso:
Após o avanço rápido

A maneira usual de fazer isso seria:

$ git checkout master
$ git merge develop

Mas faz com que o git mude o diretório de trabalho duas vezes, embora o resultado final seja idêntico ao anterior ao check-out do master.
Em alguns casos, isso pode ser inaceitável, por exemplo, temos um grande repositório, então os checkouts são demorados ou nosso compilador depende de carimbos de data / hora e pode pensar que muitos arquivos estão sujos e precisam ser reconstruídos. Portanto, precisamos de outra maneira.

Suponha que temos um clone de nosso repo. Podemos buscar ref. De desenvolvimento de clone para mestre . De acordo com os documentos, a sintaxe de busca é

$ git fetch <repository> <src>:<dst>
The remote ref that matches <src> is fetched, and if <dst> is not empty string, the local ref that matches it is fast-forwarded using <src>.

Portanto, se executarmos , o master será acelerado para desenvolver .$git fetch clonerepo develop:master

Mas <repository>pode ser um URL, incluindo um URL local, por exemplo, ‘/ caminho / para / repo /’. E como ‘.’ é o mesmo que ‘/ path / to / current / repo /’, podemos usar nosso próprio repo em vez de um clone:

$ git fetch . develop:master

Respostas relacionadas:

fatal: recusar-se a mesclar histórias não relacionadas