Como eu evito que o git exija sudo em cada comando git O

8

Eu criei um diretório /var/www para armazenar clones do meu aplicativo da web. Quando eu inicialmente clonei o aplicativo do github, ele exigiu que eu usasse o sudo e toda vez que eu fizesse um git pull ele exigia o sudo. Estou correndo em alguns problemas por causa disso. Por exemplo, minhas chaves ssh não estão combinando. Então, quando eu faço o meu git pull , eu estou tendo que usar https em vez de ssh e inserir manualmente meu nome de usuário e senha toda vez que eu quiser puxar e atualizar meu aplicativo. Como faço para configurar isso, então não preciso usar o sudo toda vez que uso o git?

    
por Scott 09.09.2013 / 17:50

3 respostas

9

Algumas coisas estão acontecendo aqui:

  • Quando você é sudo git checkout ... , todos esses arquivos são de propriedade do usuário root e do grupo raiz. Com as permissões padrão, é por isso que as alterações subsequentes nesses arquivos exigem que você seja root.

  • /var/www/ por padrão é de propriedade de www-data group. Algo que seu usuário não é por padrão.

A maneira mais fácil de escrever em /var/www/ é apenas adicione seu usuário ao grupo de dados www . Você pode, é claro, mudar o diretório que pertence ao seu usuário, mas isso pode ter alguns efeitos colaterais desagradáveis se você não estiver antecipando-os.

Você precisará fazer login novamente depois de adicionar seu usuário ao grupo de dados www.

Em seu caso especificamente, você precisará corrigir sua atual bagunça de dados de propriedade da raiz. Você pode excluí-lo como root (e fazer o check-out novamente), mas se você tiver um trabalho não salvo, será mais simples colocar tudo de volta no seu usuário. O exemplo a seguir é extremamente preguiçoso e assume o que estamos falando é a única coisa em / var / www /:

sudo chown -R www-data: /var/www/
    
por Oli 09.09.2013 / 18:12
0

Hm, alterar o proprietário da pasta? Mudei minha pasta www em / home / username, você pode mudar sua localização em / etc / apache2 / sites-enabled / 000-default

    
por michel 09.09.2013 / 18:08
0

Estou um pouco atrasado com essa resposta, mas descobri que, para evitar a inserção de senha, sempre tive que alterar o repo de https para ssh.

Na seção de ajuda do Github.com:

O comando git set-url remoto altera um URL de repositório remoto existente.

Abra o Terminal.

Altere o diretório de trabalho atual para o seu projeto local.

Relacione seus controles remotos existentes para obter o nome do controle remoto que você deseja alterar.

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Altere o URL do seu controle remoto de HTTPS para SSH com o comando set-url do git remote.

git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

Verifique se o URL remoto foi alterado.

git remote -v

# Verifique o novo URL remoto

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)
    
por Super-cluser 11.09.2017 / 20:41