Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Versionamento da pasta HOME com o GIT

Estou querendo rastrear e versionar todas as modificações na minha pasta home ($HOME), incluindo a pasta workspace que tem vários projetos já versionados pelo GIT. Tenho feito o seguinte: 1) Vou para a pasta home 2) executo o comando "git init" 3) Configuro o meu arquivo .gitignore 4) executo o comando git add .

No passo 4 acima o GIT me informa que encontrou projetos já versionados pelo GIT ( que de fato existem) e que não os rastreará. Me sugere ler a documentação do submodule (hint: See "git help submodule" for more information.) Acontece que eu gostaria simplesmente de versionar todo o meu home e queria que o GIT olhasse para os meus outros projetos já versionados pelo GIT como uma pasta qualquer, como as demais. Mas ele as está ignorando e elas não estão sendo versionadas nese repositório "pai".

Você tem alguma sugestão de como fazer isso? Os epositórios da minha workspace não podem ser mechidos.

3 respostas

Oi, Ebenézer, tudo bem?

você deu um git pull antes desse processo que você descreveu? o git pull fará automaticamente o fetch para o seu branch atual. Mas caso não solucione, se eu tiver correta na minha interpretação do problema, eu o resolvi assim:

git init
git remote add origin <link>
git remote -v (para ver sua *fetch*)
git fetch origin
git merge origin/master
git rebase origin/master
git push -u origin master

No meu caso, eu usei esses comandos para subir uma pasta para um repositório do qual não queria mexer, como você, mas sim adicionar. (se for isso mesmo o seu caso).

Espero ter te ajudado e me diz se conseguiu :}

Olá, Laís. Creio que não fui claro na minha exposição. Sua solução não tem absolutamente nada a ver com a minha dúvida.

Vou tentar explicar o meu problema de outra forma:

Eu tenho a minha pasta home no Linux: /home/meuusuario Eu tenho uma pasta com muitos projetos já versionados pelo git dentro da pasta workspace, isto é, /home/meuusuario/workspace. Acontece que eu tenho muitas outras coisas na minha pasta /home/meuusuario além da pasta workspace, como por exemplo a pasta Documents (/home/meuusuario/Documents).

Eu gostaria de criar um mega repositório que versionasse toda a minha pasta home inclusive pegando os projetos já versionados pelo GIT que estão na pasta workspace.

Isto é, eu quero fazer o seguinte: cd /home/meuusuario git init

Depois, a cada dez minutos eu queria que um script fizesse os seguintes comandos:

cd /home/meuusuario git add . git commit -m "Commit automático para fins de backup"

Acontece que quando faço isso, os projetos GIT que estão na pasta /home/meuusuario/workspace não estão sendo incluídos nesse repositório da pasta /home/meuusuario pois o GIT diz que eu devo usar submodulos para tal. Eu apenas quero um meio de ter "fotos" periódicas (a cada 10 minutos) de todo o conteúdo da minha pasta HOME de forma que eu possa desfazer modificações realizadas, recuperar arquivos deletados etc.

A minha estrutura de pastas atual é mais ou menos assim:

/home /.git <==== pasta do GIT /meuusuario /Documents ....Muitos arquivos aqui /Relatorios ....Muitos arquivos aqui /Outras pastas ....Muitos arquivos aqui /workspace /projetoJava1Versionadoaqui ....Muitos arquivos aqui /.git <==== pasta do GIT /projetoJava2Versionadoaqui ....Muitos arquivos aqui /.git <==== pasta do GIT /projetoJava3Versionadoaqui ....Muitos arquivos aqui /.git <==== pasta do GIT

Note que a pasta /home/.git é a pasta do repositório que criei no meu home. As pastas .git dentro dos projetos que estão na pasta workspace são de projetos já versionados pelo GIT. Esses projetos não estão sendo incluídos pelo GIT no repositório criado no meu HOME. É exatamente isso que eu quero fazer e não consigo.

solução!

Oi Ebenezer o git é um sistema de controle de versão criado para lidar com projetos, não com diretórios de projetos, ou unidades de projetos, cada projeto tem muitas particularidades como autores, branchs, commits, remotes, mensagens de commit que não são iguais para todos os projetos, se o que você deseja fazer é o backup dos aquivos existem outras ferramentas para isso o git como controle de versão não trabalha dessa maneira, se você adicionar um diretório já versionado pelo git ele realmente o ignorará, porque ele já está fazendo o trabalho dele, ter um controle de versão de projeto é diferente de sincronizar mudanças em um diretório muitas decisões são especificas de cada projeto.

Espero ter ajudado e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software