Controle de versão de arquivos individuais usando o GitHub Gist

imagem

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:

  1. Todos os scripts, incluindo os desnecessários, são copiados para o projeto.
  2. 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:

  1. - adicione o arquivo ao Gistub gist (um mini-repositório é gerado)
  2. - vincular o mini-repositório ao nosso projeto como um ramo separado
  3. - atribuir uma pasta para este ramo
  4. - esvaziar.
  5. - 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":

imagem

Abra o repositório do nosso projeto no GitExtensions e selecione:

[Repositório] -> [Repositórios remotos ...]

imagem

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" 

imagem

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 

imagem

imagem

Resultado:

imagem

Informações adicionais:

https://git-scm.com/book/en/v1/Tools-Git-Merging-trees
https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree
https://www.nwcadence.com/blog/git-subtrees

Source: https://habr.com/ru/post/pt419925/


All Articles