website atualização com um comando único (git push) em vez de arrastar FTP e soltando

votos
10

Situação:

  • Eu tenho uma cópia local de um site
  • Eu tenho um servidor que eu tenho acesso SSH para

O que eu quero fazer?

  • Comprometer localmente até que eu estou feliz com o meu código
  • Faça ramos localmente
  • Ter um branch master que é a que deve ser empurrada para o servidor
  • Atualizar o site usando um único comando (git push origin master)

Se eu criar um repositório git localmente usando git init e empurre para uma pasta no servidor, ele não funciona. Quando eu FTP para o servidor para verificar os arquivos, eles estão realmente lá. Quando eu SSH no servidor e fazer git status, não é limpo, mesmo que ele deve ser desde que eu só empurrou para o servidor.


Passos que eu estou fazendo:

  1. Criar uma nova pasta no meu computador (mkdir folder_x)
  2. Vá para essa pasta (cd folder_x)
  3. Configurar um novo repositório git lá (git INIT)
  4. (Repositório git configura com sucesso)
  5. Empurre o repositório para o servidor usando mestre origem git push (onde origem é configurado como usuário: pass@server.tld)
Publicado 19/05/2009 em 17:49
fonte usuário
Em outras línguas...                            


4 respostas

votos
12

Você precisa escrever um gancho post-receive que é executado git checkout -fapós o repositório git remoto recebe um empurrão. Veja Usando Git para gerenciar um site para obter mais detalhes.

Respondeu 19/05/2009 em 19:03
fonte usuário

votos
1

Quando você empurra para um repositório git, ele não atualizar os arquivos de trabalho desse repositório. Geralmente quando você empurra, você deve estar empurrando para um repositório nua --- que parece ser como eles pretendiam git push para trabalhar.

Para um dos meus projetos (locais), eu escrevi um script para verificar automaticamente as últimas subdiretório "ui" quando eu empurrar o meu trabalho a um repo implantação. É incorporado em uma resposta anterior aqui: Desenvolver projetos Django usando Git

Você também pode simplesmente ter o gancho de pós-atualização no servidor fazer um "git reset mestre --hard" se alguém empurra uma atualização para o mestre, e usar um repo não-nua em vez de ter uma área separada para arquivos retirados.

Respondeu 19/05/2009 em 19:26
fonte usuário

votos
0

Git Versão 1.9.1
Servidor Ubuntu 14.04 LTS
LAMP Servidor

Eu defini o meu servidor LAMP para atualizar o meu diretório de trabalho do meu Git repo sempre um dos meus desenvolvedores web empurra uma mudança para o servidor. Notei que o log iria notar os novos commits, mas não atualizar o diretório de trabalho. Em vez de fazer isso manualmente (git checkout -f) para cada atualização, este pode ser ajustado automaticamente para fazê-lo depois de um empurrão foi recebido.

  1. Em sua " .git diretório", vá para o " ganchos pasta".
  2. Crie um arquivo chamado " pós-receber " dentro da " ganchos pasta" com este conteúdo:

    #! / bin / sh

    # Atualização diretório de trabalho após ter recebido um empurrão de clientes remotos.
    # Este deve ser dirigido para o diretório git trabalho.

    GIT_WORK_TREE = / var / www / dev_site git checkout -f

  3. Ativar permissões para executar o arquivo, digitando " chmod + x pós-receber " na pasta "ganchos".

Ele agora vai atualizar o diretório de trabalho quando submissões são empurrados para o repo Git. Meu site agora mostra as mudanças quando eu visitá-lo em um navegador.

Neste exemplo, o meu diretório de trabalho é " / var / www / dev_site ". Alterar este acordo para onde seu Repo é.

Por favor, note que este Repo não é um Repo nua. A Repo nua não tem um diretório de trabalho de um servidor web pode ler.

Respondeu 28/01/2015 em 01:38
fonte usuário

votos
0

Eu uso o gancho post-update como detalhado nesta entrada FAQ: http://git.or.cz/gitwiki/GitFaq#non-bare

Ele irá atualizar a sua árvore de trabalho se você tiver configurado o repo remoto como "nua".

Respondeu 03/06/2009 em 14:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more