Como você clonar um repositório Git para uma pasta específica?
-
19-08-2019 - |
Pergunta
A execução do git clone git@github.com:whatever
comando cria um diretório na minha pasta atual com o nome que quer, e descarta o conteúdo do repositório Git para essa pasta:
/httpdocs/whatever/public
O meu problema é que eu preciso o conteúdo do repositório Git clonado em meu diretório atual para que eles apareçam no local apropriado para o servidor web:
/httpdocs/public
Eu sei como mover os arquivos depois de eu ter clonado o repositório, mas isso parece quebrar Git, e eu gostaria de ser capaz de atualizar apenas chamando git pull
. Como posso fazer isso?
Solução
Opção A:
git clone git@github.com:whatever folder-name
Ergo, para uso right here
:
git clone git@github.com:whatever .
Opção B:
Mover a pasta .git
também. Note-se que a pasta .git
está escondido na maioria dos exploradores de ficheiros gráficos, por isso certifique-se de mostrar 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 pega todos os arquivos normais, o segundo agarra linha dot-arquivos. É também possibe fazê-lo em uma linha, permitindo dotglob (ou seja shopt -s dotglob
), mas que é provavelmente uma má solução se você está fazendo a pergunta esta resposta respostas.
Melhor ainda:
Mantenha a sua cópia de trabalho em outro lugar, e criar um link simbólico. Como esta:
ln -s /where/it/is/right/now /the/path/I/want/to/use
Para você caso, esta seria algo como:
ln -sfn /opt/projectA/prod/public /httpdocs/public
O que poderia facilmente ser alterado para teste se você queria, ou seja:.
ln -sfn /opt/projectA/test/public /httpdocs/public
sem mover arquivos ao redor. -fn
adicionado no caso de alguém está copiando estas linhas (-f
é força, -n
evitar algumas interações, muitas vezes indesejados com links já e não-existentes).
Se você só quer que ele funcione, use a opção A, se alguém vai olhar para o que você tem feito, o uso Opção C.
Outras dicas
O exemplo que eu acho que um monte de gente fazendo esta pergunta está depois é este. Se você é em o diretório que você deseja que o conteúdo do repositório git despejado para, execute:
git clone git@github.com:whatever .
A "" no final especifica a pasta atual como a pasta de checkout.
Ir para a pasta .. Se a pasta está vazia, então:
git clone git@github.com:whatever .
else
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
Basic repositório Git Clonagem
Você clone de um repositório com
git clone [url]
Por exemplo, se você deseja clonar a biblioteca da Universidade de Stanford Drupal Abrir Framework Git chamado open_framework, você pode fazê-lo como este:
$ git clone git://github.com/SU-SWS/open_framework.git
Isso cria um diretório chamado open_framework (em sua localização atual sistema de arquivos local), inicializa um diretório .git dentro dela, puxa para baixo todos os dados para esse repositório, e obtém uma cópia de trabalho da versão mais recente. Se você vai para o diretório open_framework recém-criado, você verá os arquivos do projeto em lá, pronto para ser trabalhado ou usado.
Clonagem um repositório para um específico Pasta local
Se você deseja clonar o repositório em um diretório chamado algo diferente de open_framework, você pode especificar que, como a próxima opção de linha de comando:
$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme
Esse comando faz a mesma coisa que o anterior, mas o diretório de destino é chamado mynewtheme.
Git tem um número de diferentes protocolos de transferência você pode usar. O exemplo anterior usa o protocolo git: //, mas você também pode ver http (s): // ou usuário @ servidor:. /Path.git, que usa o protocolo de transferência SSH
Quando você mover os arquivos para onde quiser, você também mover o diretório .git
? Dependendo do seu sistema operacional e configuração, este diretório pode ser escondido.
Ele contém o repo e os arquivos de suporte, enquanto os arquivos de projeto que estão em seu diretório /public
são apenas as versões no momento do check-out commit (branch master por padrão).
Clone: ??
git clone git@jittre.unfuddle.com:jittre/name.git
Clone o "ramo específico":
git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git
Para clone git repositório para uma pasta específica, você pode usar o parâmetro -C <path>
, por exemplo.
git -C /httpdocs clone git@github.com:whatever
Embora ainda vai criar uma pasta whatever
em cima dele, então para clonar o conteúdo do repositório no diretório atual, use a seguinte sintaxe:
git git@github.com:whatever .
Note-se que a clonagem em um diretório existente é única permitida quando o diretório é esvaziar .
Desde que você está clonagem para a pasta que seja acessível para o público, considere separar seu repositório Git a partir de sua árvore de trabalho usando --separate-git-dir=<git dir>
ou excluir pasta .git
na sua configuração de servidor web (por exemplo, no arquivo .htaccess
).
Se você quiser clone para a pasta atual, você deve tentar este:
git clone https://github.com/example/example.git ./
Para clone de Present Diretório de Trabalho :
git clone https://github.com/link.git
Para clone de Outro Diretório :
git clone https://github.com/link.git ./Folder1/ pasta2
espero que ajude:)
Certifique-se de remover o repositório .git se você estiver tentando verificar coisa fora para o diretório atual.
rm -rf .git
então git clone https://github.com/symfony/symfony-sandbox.git
Uso
git clone <repository>
Clone o repositório localizado no
git clone <repo> <directory>
Clone o repositório localizado em
Fonte: Configurando um repositório
Aqui está como eu faria isso, mas eu fiz um alias para fazer isso por mim.
$ cd ~Downloads/git; git clone https:git.foo/poo.git
Há provavelmente uma maneira mais elegante de fazer isso, no entanto, achamos que este seja mais fácil para mim.
Aqui está o alias eu criei para acelerar as coisas junto. Fiz para zsh, mas deve funcionar muito bem para bash ou qualquer outro shell como peixes, xyzsh, fizsh, e assim por diante.
Editar ~/.zshrc
, /.bashrc
, etc. com seu editor favorito (o meu é Leafpad, então eu iria escrever $ leafpad ~/.zshrc
).
A minha preferência pessoal, no entanto, é fazer uma zsh plugin para manter o controle de todos os meus apelidos. Você pode criar um plugin pessoal para oh-meu-zsh, executando os seguintes comandos:
$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
# In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
# Again, in my case 'ev-aliases.plugin.zsh'
Em seguida, adicione estas linhas ao seu arquivo em branco alises.plugin recém-criado:
# Git aliases
alias gc="cd ~/Downloads/git; git clone "
(A partir daqui, substituir o seu nome com o meu.)
Em seguida, a fim de obter os aliases para o trabalho, eles (juntamente com zsh) tem que ser originado-in (ou seja lá o que é chamado). Para fazê-lo, dentro de seu documento plugin personalizado acrescentar o seguinte:
## Ev's Aliases
#### Remember to re-source zsh after making any changes with these commands:
#### These commands should also work, assuming ev-aliases have already been sourced before:
allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
####
####################################
# git aliases
alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "
####################################
Salvar seu oh-meu-zsh plugin, e allsource
prazo. Se isso não parece trabalho, basta executar source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh
. Isso irá carregar a fonte plug-in que permitirá que você use allsource
a partir de agora.
Eu estou no processo de fazer um repositório Git com todos os meus apelidos. Sinta-se livre para vê-los aqui: do EV dot-files . Sinta-se livre para forquilha e melhorá-las para atender às suas necessidades.
De alguma razão esta sintaxe não está de pé para fora:
git clone repo-url [folder]
Aqui pasta é um caminho opcional para a pasta local (que será um repositório local).
Git clone
também pull
código de repositório remoto para o repositório local.
Na verdade, é verdade:
git clone repo-url = git init + git remote add origin repo-url + git pull
Se você estiver usando ssh
para git cloning
você pode usar o comando a seguir.
git -C path clone git@github.com:path_to_repo.git
por exemplo:
git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git
iria puxar o repositório git para requests
ao seu caminho /home/ubuntu/
.
For Windows user
1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .
It will start cloning saving on the selected folder you given .
Vou recomendar que você siga o seguinte link:
https://help.github.com/en/articles/cloning-a-repository
Se você receber o seguinte erro ao git clone URL comando
fatal: unable to access 'URL': Could not resolve host: github.com
Em seguida, use o seguinte comando para corrigi-lo:
git config --global --unset https.proxy
No que se refere esta linha do post original:
"Eu sei como mover os arquivos depois de eu ter clonado o repo, mas esta parece quebrar git "
Eu sou capaz de fazer isso e eu não vejo qualquer problema até agora com o meu add, comprometer, empurrar, puxar operações.
Esta abordagem é dito acima, mas simplesmente não dividido em etapas. Aqui estão os passos que o trabalho para mim:
- clone do repo em qualquer pasta temporária fresco
- cd em que raiz pasta que acabou clonado localmente
- copiar todo o conteúdo da pasta, incluindo o diretório /.git - em qualquer existente pasta que você gosta; (Digamos, um projeto eclipse que você deseja mesclar com o seu repo)
O actual pasta que você acabou de copiar os arquivos para, agora está pronto para interagir com git.