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í?

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


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.