Estou tentando executar o git a partir de um diretório diferente do que estou. Por exemplo, se estou em:
cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.
Então agora eu quero executar este comando de um diretório diferente usando a --git-dir
opção
Então, digamos que estou dentro root/
e tente o seguinte:
git --git-dir="/home/domain/" status
## Error
fatal: Not a git repository: '/home/domain/'
Eu também tentei incluir a .git
pasta ie
git --git-dir="/home/domain/.git/" status
Mas parece que ele está tentando executar o git a partir da raiz, ou seja, excluindo tudo da minha pasta de domínio e adicionando tudo na raiz.
Espero que alguém possa aconselhar sobre o que estou fazendo de errado.
--git-dir
e,--work-tree
para um comando simples: veja minha resposta abaixoRespostas:
Você também precisa definir o diretório de trabalho. Confuso, eu sei, mas é uma coisa de flexibilidade.
Você pode ler um pouco mais aqui
fonte
--git-dir
não fosse especificado, iria verificar se/mycode/.git
existia e usá-lo antes de gerar um erro.git --git-dir=~/src/s3cmd/.git --work-tree=~/src/s3cmd pull
não funcionou, masgit --git-dir=/home/username/src/s3cmd/.git --work-tree=/home/username/src/s3cmd pull
fezgit --git-dir="$HOME/foo/.git" --work-tree="$HOME/foo" status
Iniciando o git 1.8.5 (que deve sair na próxima semana), será ainda mais simples:
Não há necessidade de definir
--git-dir
e--work-tree
mais!Veja commit 44e1e4 de Nazri Ramliy :
fonte
git status -C <path>
não vai funcionar!)Com base no seu comentário acima, parece que você ainda está com um problema:
Parece que você pretende executar isso
crontab
ou algo assim. Pode ser melhor usarcd
para alternar primeiro para o seu diretório de trabalho. Por exemplo:Isso temporariamente (em um subshell, que é o que os parênteses fazem) altera o diretório atual para
/home/domain
e depois é executadogit pull origin master
. Após a conclusão do comando, seu diretório atual permanece o que era antes do comando.fonte
Com o Git 2.26 (primeiro trimestre de 2020), a documentação é mais clara.
Um efeito de especificar onde
GIT_DIR
está (com a variável de ambiente ou com agit --git-dir=<where> cmd
opção " ") é desativar a descoberta do repositório .Isso causou um pouco mais de estresse na documentação, pois os novos usuários geralmente ficam confusos.
Veja commit d82ad54 (30 de janeiro de 2020) por Heba Waly (
HebaWaly
) .(Mesclado por Junio C Hamano -
gitster
- no commit 17e4a1b , 12 de fevereiro de 2020)Portanto, a documentação do
git --git-dir
momento inclui:fonte