J'essaie d'exécuter git à partir d'un répertoire différent de celui dans lequel je suis. Donc, par exemple, si je suis dans:
cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.
Alors maintenant, je veux exécuter cette commande à partir d'un répertoire différent en utilisant l' --git-dir
option.
Disons donc que je suis dedans root/
et essayez ceci:
git --git-dir="/home/domain/" status
## Error
fatal: Not a git repository: '/home/domain/'
J'ai aussi essayé d'inclure le .git
dossier ie
git --git-dir="/home/domain/.git/" status
Mais cela ressemble à essayer de lancer git à partir de la racine, c'est-à-dire tout supprimer de mon dossier de domaine et ajouter tout à la racine.
J'espère que quelqu'un pourra vous conseiller sur ce que je fais mal.
--git-dir
et--work-tree
pour une commande simple: voir ma réponse ciRéponses:
Vous devez également définir le répertoire de travail. Je suis confus, mais c'est une question de flexibilité.
Vous pouvez en lire un peu plus ici
la source
--git-dir
n'était pas spécifié, il vérifierait s'il/mycode/.git
existait et l'utiliserait avant de générer une erreur.git --git-dir=~/src/s3cmd/.git --work-tree=~/src/s3cmd pull
n'a pas fonctionné mais l'agit --git-dir=/home/username/src/s3cmd/.git --work-tree=/home/username/src/s3cmd pull
faitgit --git-dir="$HOME/foo/.git" --work-tree="$HOME/foo" status
À partir de git 1.8.5 (qui devrait sortir la semaine prochaine), ce sera encore plus simple:
Plus besoin de régler
--git-dir
et--work-tree
plus!Voir commit 44e1e4 de Nazri Ramliy :
la source
git status -C <path>
ne fonctionnera pas!)Sur la base de votre commentaire ci-dessus, il semble que vous rencontrez toujours un problème:
Il semble que vous ayez l'intention d'exécuter ceci à partir de
crontab
quelque chose. Il vaut mieux utiliser d'abordcd
pour basculer vers votre répertoire de travail. Par exemple:Cela va temporairement (dans un sous-shell, ce que font les parenthèses) changer le répertoire en cours
/home/domain
, puis exécutergit pull origin master
. Une fois la commande terminée, votre répertoire actuel reste ce qu'il était avant la commande.la source
Avec Git 2.26 (T1 2020), la documentation est plus claire.
L'un des effets de la spécification de l'emplacement
GIT_DIR
(avec la variable d'environnement ou l'git --git-dir=<where> cmd
option " ") est de désactiver la découverte du référentiel .Cela a été placé un peu plus de stress dans la documentation, car les nouveaux utilisateurs sont souvent confus.
Voir commit d82ad54 (30 janvier 2020) par Heba Waly (
HebaWaly
) .(Fusionné par Junio C Hamano -
gitster
- en commit 17e4a1b , 12 fév 2020)Alors le documentation pour l'
git --git-dir
instant comprend:la source