Transferir repositórios git copiando

Transferir repositórios git copiando

Eu queria transferir muitos repositórios git da minha antiga máquina Windows 7 (git 2.6.3.windows.1) para a nova no Ubuntu 16.04 (git 2.7.4). Como nem todos eles tinham repositórios remotos, decidi simplesmente copiá-los. Isso deve funcionar. No entanto, todos os arquivos rastreados em todos os repositórios deixaram de ser testados. Na verdade, é possível que alguns deles não tenham sido cometidos antes da transferência dos acordos de recompra, mas a maioria deles foi cometida.

Se eu procurar diffo arquivo que foi confirmado antes da transferência do repositório com um comando:

$git log -p -1 .gitignore
commit c566830cd3ffdf96556d29aee8dd1dc95d359872
Author: Pavel <[email protected]>
Date:   Fri May 13 18:07:25 2016 +0300

    Start

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c2535fe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+__pycache__
+.idea
+test

ele retorna a referência ao último commit onde este arquivo foi realmente confirmado. O commit no exemplo acima é o primeiro no repositório.

Então, por alguma razão, o git se recusa a reconhecer os arquivos confirmados, mas os vincula ao último commit onde eles foram realmente confirmados.

É o problema de incompatibilidade de diferentes versões ou plataformas git ou algo mais? E como resolver esse problema e não frear os repos?

Responder1

Essas mudanças são reais? Parece-me que o git está apenas reclamando que os atributos dos arquivos são diferentes, o que certamente acontecerá entre sistemas operacionais diferentes (porque o Windows e o Linux têm sistemas de arquivos diferentes com metadados diferentes).

Que tal criar um clone "vazio".

NO WINDOWS

Vá para alguma pasta, por exemplo:

cd c:\mycode

Clone localmente seu repositório nesta pasta usando onuopção, isso significa que NADA será verificado, apenas metadados:

git clone --bare <path_of_your_repo>

Agora, feche a pasta resultante (por exemplo"c:\mycode\<pasta>.git") e transferi-lo manualmente para o Linux.

NO LINUX

No Linux, primeiro copie a pasta compactada do Windows e descompacte-a. Agora, clone para alguma nova pasta, por exemplo:

mkdir ~/mynewcode
cd ~/mynewcode
git clone /<where_you_copied_and_unzipped>/<folder>.git    <--- i.e. this is the folder copied/unzipped from Windows

E agora você pode alterar a origem se quiser jogar fora a pasta descompactada do Windows.

git remote set-url origin <new_origin>

OU, basta removê-lo completamente:

git remote rm origin

Responder2

Que tal enviá-los para o github e depois clonar o repositório no seu Ubuntu? (Teria comentado, mas ainda não tenho 50 representantes)

Se precisar de ajuda com isso, posso fornecer mais instruções.

informação relacionada