1
resposta

Vários arquivos no mesmo repositório

Olá! Tenho seguinte dúvida, tenho feito as migração de repositório do Subversion para o GIT, porém reparei ao realizar o checkout dos artefatos tenho que baixar todos os arquivos sendo que eu tenho que alterar somente 1, neste caso não existe uma maneira de pegar somente ele ? Por exemplo:

Arquivo 1
Arquivo 2
Arquivo 3
Arquivo 4

Quero só alterar o 4 sem baixar o restante, é possível?

Obrigado,

Paulo

1 resposta

Olá Paulo, tudo bem com você? Espero que sim.

Peço desculpa pela demora em responder o seu tópico.

É importante dizer que existe uma diferença entre clonar um repositório e fazer download. Quando clonamos um repositório estaremos carregando ele com todo histórico do projeto desde o início, o que inclui todos os arquivos do projeto, contudo, quando fazemos o download apenas estamos pegando os arquivos que estão na branch principal sem o histórico do git, o download é apenas para ter os arquivos no computador onde geralmente não temos pretensão de enviá-los ao sistema do git novamente.

Com base nisso, por padrão, o Git não suporta clonar apenas um único arquivo dentro de um repositório de forma simples e prática, mas não é impossível realizar esse objetivo. Podemos usar algumas flags e comandos para realizar o clone de um único arquivo, como por exemplo a flag --depth1 para conseguir clonar uma revisão específica e em conjunto utilizar --no-checkout seguindo por sparse-checkout set para trazer apenas o arquivo desejado e não todos.

Sendo assim, suponha que no repositório sistema-de-cadastros eu queira clonar apenas o arquivo app.js e ignorar os demais, como mostro abaixo:

Print tirado de um repositório do Github, que apresenta duas barras superiores, a primeira mostra de quem é o repositório e o nome dele, no caso está escrito, armanobarros/sistema-de-cadastros. A segunda barra conta com as seguintes opções, Code, Issues, Pull requests, Actions, Projects, Security e Insights. Após isso temos também alguns componentes no centro do print, sendo eles na parte mais acima um linha com uma caixa de seleção escrita main, logo após outros dois componentes branches e tags. E por temos uma tabela central organizada da seguinte forma: A parte superior da tabela mostra a imagem do usuário do Github seguido pelo nome dele, abaixo temos uma sequência em forma de coluna de alguns arquivos, sendo eles, README.md, app.js, contato.html e index.html.

Para isso, podemos abrir o terminal e digitar o comando abaixo.

git clone --depth 1 --branch main --no-checkout https://github.com/armanobarros/sistema-de-cadastros

No comando acima, após a cláusula --branch, dizemos qual o nome do ramo que queremos clonar, e após o --no-checkout, colocamos o link do repositório do github. Após concluir este processo, entre na pasta que você clonou usando o comando cd nome-da-pasta, que no caso deste exemplo será cd sistemas-de-cadastros. Ao concluir, execute o comando sparse-checkout que tratá apenas o arquivo desejado:

git sparse-checkout set app.js

Por fim volte a branch principal para poder trabalhar com o arquivo selecionado:

git checkout main

Pronto! Agora, você conseguirá trabalhar apenas com o arquivo app.js sem trazer para seu computador todos os arquivos daquele repositório e poderá fazer o mesmo para o Arquivo 4. Posterior a isso, você poderá modificar esse arquivo e usar os comandos convencionais do git para adição (git add), commit (git commit -m) e envio (git push). Abaixo, um gif de todo o procedimento que foi realizado para efetuar o clone apenas do arquivo app.js:

Gif feito no terminal Git Bash, onde inicialmente é colado o comando, git clone --depth 1 --branch main --no-checkout https://github.com/armanobarros/sistema-de-cadastros, depois que é apresentado a confirmação da clonagem do repositório é colado o comando cd sistema-de-cadastros, que faz com que acesse a pasta que foi clonada do repositório, em sequência é colado o comando git sparse-checkout set app.js, logo após é colado também o comando git checkout main, por fim é utilizado o comando ls, que mostra os arquivos naquela pasta, no caso apenas app.js.

Espero que eu tenha lhe ajudado, caso ainda tenha dúvidas sobre o tópico estarei a sua disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!