
Muitas vezes acontece que um desenvolvedor, com o tempo, acumula uma coleção de códigos que ele usa em seus projetos.
Ele usa alguns scripts em alguns projetos, outros em outros.
Esses scripts são aprimorados com o tempo, os bugs são removidos e otimizados. Portanto, surge a questão de
como sincronizar novas versões de scripts com as dos projetos .
Existem várias opções:
A primeira opção:Crie um repositório e coloque todos os scripts lá. Então este repositório é conectado como um submódulo ao projeto e usado.
Contras:
- Todos os scripts, incluindo os desnecessários, são copiados para o projeto.
- o submódulo não está comprometido com o repositório do projeto, portanto, se o repositório remoto do submódulo não estiver disponível, não poderemos fazer o download do projeto inteiro.
A segunda opção:Cada script deve ser armazenado separadamente no github gistub e conectado conforme necessário, como submódulos
O menos é o mesmo que na primeira versão no segundo parágrafo.
A terceira opção:Use a
subárvore Git.(Esta solução é uma alternativa para os submódulos Git)
A subárvore Git é outro método de mesclar ramificações. Sua idéia é que, tendo dois ramos, o git entenderá que um ramo não é uma variação do outro, mas uma adição.
Ideia geral:
- - adicione o arquivo ao Gistub gist (um mini-repositório é gerado)
- - vincular o mini-repositório ao nosso projeto como um ramo separado
- - atribuir uma pasta para este ramo
- - esvaziar.
- - então trabalhamos como uma ramificação regular (mesclar, confirmar, buscar ...)
Agora detalhes usando extensões Git.
1) Publicamos nosso arquivo com o código em
https://gist.github.com, onde podemos obter imediatamente um link para o repositório "mini":

Abra o repositório do nosso projeto no GitExtensions e selecione:
[Repositório] -> [Repositórios remotos ...]
Nós nos conectamos como um ramo separado.
Para fazer isso, pressione
[+] . Digite
[Nome] ,
[URL] e salve
[Salvar alterações] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

Vemos que estamos conectados ao repositório remoto.
Em seguida, precisamos associar esse ramo a uma pasta específica em nosso projeto para que o arquivo seja copiado para ele.
Para fazer isso, abra Git-bash (ctrl + G) e execute o comando:
$git read-tree --prefix=Client/Assets/ -u Util1/master
onde:
Cliente / Ativos / - caminho para a pasta na qual o arquivo será copiado
Util1 / master - o nome da ramificação do repositório remoto
(Não encontrei um caminho através da interface do usuário)
O ramo principal fica anexado à nossa pasta no projeto. E o arquivo já está lá.
Agora podemos trabalhar como em um ramo regular.Por exemplo, se um arquivo for alterado no Gist, podemos obter uma nova versão:
Nós
buscamos tudo e vemos todas as alterações:
$git fetch --progress "--all"
Em seguida, mesclamos para preencher as alterações em nosso ramo:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

Resultado:
Informações adicionais:https://git-scm.com/book/en/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees