Como você clona um repositório Git em uma pasta específica?

Executando o comando git clone git@github.com:whatever cria um diretório na minha pasta atual com o nome que quer que seja, e deixa o conteúdo do repositório Git dentro dessa pasta:

/httpdocs/whatever/public

Meu problema é que eu preciso do conteúdo do repositório Git clonado no meu diretório atual para que ele apareça no local apropriado para o servidor web:

/httpdocs/public

Eu sei como mover os arquivos após I'clonar o repositório, mas isso parece quebrar o Git, e I'gostaria de ser capaz de atualizar apenas chamando git pull. Como eu posso fazer isso?

Solução

Opção A:

git clone git@github.com:whatever folder-name

Ergo, para uso "aqui mesmo":

git clone git@github.com:whatever .

Opção B:

Mova a pasta .git' também. Note que a pasta.git' está escondida na maioria dos exploradores de arquivos gráficos, então certifique-se de mostrar os arquivos ocultos.

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

A primeira linha agarra todos os arquivos normais, a segunda linha agarra os arquivos de pontos. Também é possível fazê-lo em uma linha habilitando o dotglob (ou seja, shopt -s dotglob), mas isso provavelmente é uma má solução se você estiver fazendo a pergunta que esta resposta responde.

Melhor ainda:

Mantenha sua cópia de trabalho em outro lugar, e crie uma ligação simbólica. Assim:

ln -s /where/it/is/right/now /the/path/I/want/to/use

Para ti, isto seria algo do género:

ln -sfn /opt/projectA/prod/public /httpdocs/public

Que facilmente poderia ser alterado para testar se você quisesse, ou seja..:

ln -sfn /opt/projectA/test/public /httpdocs/public

sem mover os ficheiros por aí. Adicionado -fn' caso alguém esteja copiando estas linhas (-f' é força, `-n' evita algumas interações frequentemente indesejadas com links já existentes e inexistentes).

Se você só quer que funcione, use a Opção A, se alguém vai olhar para o que você fez, use a Opção C.

Comentários (18)

O exemplo que eu acho que muitas pessoas que fazem esta pergunta estão atrás é este. Se você está no diretório para o qual você quer que o conteúdo do repositório git seja despejado, execute:

git clone git@github.com:whatever .

O "." no final especifica a pasta atual como a pasta de checkout.

Comentários (7)

Quando você move os arquivos para onde você os quer, você também está movendo o diretório `.git'? Dependendo do seu sistema operacional e configuração, este diretório pode estar oculto.

Ele contém o repo e os arquivos de suporte, enquanto os arquivos de projeto que estão no seu diretório `/público' são apenas as versões no check-out atual de commit (ramo mestre por padrão).

Comentários (0)