Envie as alterações do git para uma unidade de rede compartilhada

90

Como uma equipe de quatro pessoas pode usar o Git (especificamente Github para Windows ) para enviar mudanças locais para uma unidade de rede compartilhada?

Agora (sem o Git), temos que copiar os arquivos do drive de rede para nossa máquina local, editar os arquivos e, em seguida, reenviá-los para o drive de rede compartilhado. Este é um processo meticuloso que pode levar a muitos erros, mas parece que o Git pode nos ajudar.

Podemos simplesmente instalar o Git no drive compartilhado e partir daí?

user1549303
fonte

Respostas:

123

Não tenho certeza se você encontrou algo que funciona para você ou não, mas tenho um artigo sobre como fazer isso em uma unidade de rede do Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Em um prompt de cmd, mude para sua unidade mapeada.

$ cd g:

Em seguida, entre no seu repositório git que logo será

scripts $ cd

Em seguida, crie um repositório git vazio. Se você não usar a opção --bare, terá problemas, portanto, não deixe isso de fora.

$ git init --bare

Agora, se você ainda não tem um repositório git local, pode clonar seu novo repositório onde quiser, navegando de volta para sua unidade local.

$ c:

$ cd trabalho / scripts

$ git clone file: // g: \ scripts

Ao clonar, você obtém automaticamente um controle remoto chamado "origem" e pode enviar por push ao servidor para mantê-lo seguro sempre que fizer alterações localmente.

$ git push origin master

Se você já tem um repositório git e deseja apenas enviar para o drive compartilhado, pode fazer isso de dentro do seu diretório git local.

$ git remoto adicionar arquivo de origem: // g: \ scripts

$ git push origin master

Tony Eichelberger
fonte
1
Obrigado - fiz exatamente isso para um projeto pessoal na minha rede doméstica.
Martin Snyder
Eu segui essas etapas, mas recebo os seguintes erros quando executo git push origin master error: cannot spawn sh: Nenhum arquivo ou diretório fatal: não foi possível bifurcar
NickStees
Obrigado. Demorou muito para encontrar esta resposta
Simon Huckett
Para quem não tem seu drive compartilhado mapeado, há pushd (e popd) para criar um drive temporário virtual para navegar ( ver link )
LoJo
Que problemas você terá se não usar --bare? Já tenho um repositório não vazio em uma unidade de rede e gostaria de usá-lo como remoto.
Fractaly de
24

Nossa equipe atualmente faz exatamente isso. Cada desenvolvedor tem o seguinte:

  1. Git instalado em sua máquina local
  2. Acesso ao drive compartilhado pessoal (L: )
  3. Acesso a um drive de grupo compartilhado ( V:)

Temos o repositório "remoto" (configurado usando init -bare) na V:unidade e todos têm um clone em sua L:unidade pessoal . Todas as alterações são feitas na L:unidade e enviadas por push para a V:unidade, que são posteriormente puxadas pelos outros desenvolvedores para seus respectivos repositórios pessoais em suas L:unidades. Isso funciona sem problemas e reduz a necessidade de um servidor Git.

eykanal
fonte
Certo, ótimo! Preciso primeiro criar um repo local e, em seguida, configurar um remoto desse repo na unidade compartilhada?
user1549303
1
@ user1549303 - É assim que fazemos. Você pode criar o repositório local (nosso L:repositório de unidade) usando git inite, em seguida, criar o remoto (nosso v:repositório de unidade) usando git clone --bare(ou a git init --baree, em seguida, um push de L:).
eykanal
@eykanal - Minha equipe atualmente usa uma biblioteca de controle de fonte antiga e horrível e estamos tentando mudar para o git. Uma coisa que nossa biblioteca atual me permite fazer é ver quem retirou um arquivo, mas se esqueceu de fazer o check-in das alterações. Com o git, todos os repositórios são locais, então como você pode saber se alguém se esqueceu de enviar para "v:"?
Kevin Buchan
3
@KevinBuchan - Eu sugiro que você poste seu comentário como uma nova pergunta.
eykanal
1
Como o Git reage quando dois desenvolvedores tentam enviar para o mesmo repositório compartilhado (digamos V :) ao mesmo tempo? Você teve algum problema com operações push simultâneas?
Jordi
2

Você pode adicionar outro apontador remoto para sua unidade de rede (git remote)

Em seguida, você pode empurrar e puxar semelhante ao que faz com o github

bluesman
fonte