Eu sou um Noob completo quando se trata de GIT. Eu tenho dado meus primeiros passos nos últimos dias. Eu configurei um repositório no meu laptop, baixei o tronco de um projeto SVN (tive alguns problemas com as filiais, não consegui fazê-las funcionar), mas tudo parece ok por lá.
Agora eu quero poder puxar ou empurrar do laptop para minha área de trabalho principal. O motivo é que o laptop é útil no trem, pois passo 2 horas por dia viajando e posso fazer um bom trabalho. Mas minha principal máquina em casa é ótima para o desenvolvimento. Então, eu quero poder empurrar / puxar do laptop para o computador principal quando chegar em casa. Eu pensei que a maneira mais simples de fazer isso seria ter apenas a pasta de código compartilhada na LAN e fazer:
git clone file://192.168.10.51/code
infelizmente isso não parece estar funcionando para mim:
então eu abro um git bash cmd e digito o comando acima, estou em C: \ code (a pasta compartilhada de ambas as máquinas) é isso que eu recebo de volta:
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Como posso compartilhar o repositório entre as duas máquinas da maneira mais simples possível.
Haverá outros locais que serão pontos de armazenamento oficiais e locais de onde os outros desenvolvedores, servidores de CI etc. serão transferidos, isso é apenas para que eu possa trabalhar no mesmo repositório em duas máquinas.
De acordo com a sugestão de Sebastian, recebo o seguinte:
C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
** EDITAR - RESPOSTA **
Obrigado a todos que ajudaram. Eu tentei mapear uma unidade e isso funcionou, então pensei em voltar e tentar novamente sem mapear. O resultado final foi:
git clone file://\\\\192.168.0.51\code
Isso funcionou muito bem.
obrigado
Respostas:
Você pode especificar o URL do controle remoto aplicando o caminho UNC ao protocolo do arquivo. Isso requer que você use quatro barras:
Por exemplo, se sua máquina principal possui o IP 192.168.10.51 e o nome do computador
main
, e possui um compartilhamento nomeadocode
que é um repositório git, os dois comandos a seguir devem funcionar igualmente:Se o repositório Git estiver em um subdiretório, basta anexar o caminho:
fonte
O comando acima usa a notação de caminho POSIX para o diretório com seu repositório git. Para Windows, é (o diretório
C:/path/to/repo
contém o.git
diretório):O repositório será clonado para
C:\some\dir\my_project
. Se você omitirfile:///
parte, a--local
opção estará implícita.fonte
a resposta com o nome do host não funcionou para mim, mas isso funcionou:
fonte
Consegui fazer isso usando file: //, mas com uma barra adicional para indicar um caminho absoluto.
No meu caso, estou usando o Git no Cygwin para Windows, que você pode ver por causa da parte / cygdrive / c nos meus caminhos. Com alguns ajustes no caminho, ele deve funcionar com qualquer instalação do git.
Adicionar um controle remoto funciona da mesma maneira
fonte
Talvez mapeie o compartilhamento como uma unidade de rede e faça
Principalmente apenas um palpite; Eu sempre faço essas coisas usando ssh. Seguir essa sugestão, é claro, significa que você precisará mapear essa unidade sempre que pressionar / puxar de / para o laptop. Não tenho certeza de como você configura o ssh para trabalhar sob janelas, mas se você estiver fazendo isso muito, pode valer a pena investigar.
fonte
cd
outro diretório naZ:
unidade. IIRC; Não sou usuário do Windows há algum tempo. Também pode ser quegit
interprete letras de unidade de maneira diferente da convenção padrão do Windows. Você tentou `Z:`?Não tenho certeza se foi por causa da minha versão do git (1.7.2) ou o quê, mas as abordagens listadas acima usando o nome da máquina e as opções de IP não estavam funcionando para mim. Um detalhe adicional que pode ou não ser importante é que o repositório era um repositório simples que eu havia inicializado e enviado a partir de uma máquina diferente.
Eu estava tentando clonar project1 como recomendado acima com comandos como:
e
O que funcionou para mim foi algo mais simples:
Nota - mesmo que o repositório clonado fosse vazio, isso produziu um clone 'normal' com todos os arquivos de código / imagem / recurso reais que eu esperava (ao contrário dos internos do repositório git).
fonte
Digite caminhos absolutos ou caminhos relativos.
Por exemplo, o primeiro abaixo usa caminhos absolutos:
(isso é de dentro da pasta que contém o repositório e o backup como subpastas. também lembre-se de que a pasta de backup não será modificada se já contiver algo. e se não estiver presente, será criada uma nova pasta)
O seguinte usa caminhos relativos:
fonte
Embora o caminho UNC seja suportado desde o Git 2.21 (fevereiro de 2019, veja abaixo), o Git 2.24 (quarto trimestre de 2019) permitirá
Não basta mais
file:////xxx
'file://
', é suficiente para se referir a um compartilhamento de caminho UNC.Consulte " Git Fetch Error with UNC ".
Observe que desde 2016 e o MingW-64
git.exe
empacotado com o Git for Windows , um caminho UNC é suportado.(Consulte " Como o msys, o msys2 e o MinGW-64 estão relacionados entre si? ")
E com o Git 2.21 (fevereiro de 2019), esse suporte se estende até mesmo em um shell msys2 (com aspas no caminho UNC).
Consulte commit 9e9da23 , commit 5440df4 (17 jan 2019) por Johannes Schindelin (
dscho
) .Ajudado por: Kim Gybels (
Jeff-G
) .(Incorporado por Junio C Hamano -
gitster
- in commit f5dd919 , 05 de fevereiro de 2019)Antes do Git 2.21, devido a uma peculiaridade do método do Git
git-upload-pack
, havia um problema ao passar caminhos com barras invertidas: O Git forçava a linha de comando através do shell, que possui semânticas de citação diferentes no Git for Windows (sendo um MSYS2 programa) que executáveis Win32 regulares, comogit.exe
ele próprio.O sintoma é que a primeira das duas barras invertidas nos caminhos UNC do formulário
\\myserver\folder\repository.git
é removida .Isso é mitigado agora:
Vejo
t/t5580-clone-push-unc.sh
fonte
Depois do clone, para mim, o push não estava funcionando.
Solução: Onde o repo é clonado, abra a pasta .git e o arquivo de configuração.
Para o valor definido do URL de origem remota:
fonte