354 Stimmen

git pull, während man sich nicht in einem git-Verzeichnis befindet

Nehmen wir an, ich habe ein Verzeichnis, /X/Y das ein Git-Repository ist. Ist es möglich, irgendwie einen Befehl aufzurufen wie git pull von innen /X sondern auf die Zielgruppe der /X/Y Verzeichnis?

EDITAR: Ich schätze, ich fragte mich speziell: ist es möglich, dies mit dem Befehl git zu tun, aber ohne Verzeichnisse zu ändern?

HINWEIS: Ich habe akzeptiert VonCs Antwort weil es viel eleganter ist als die bisherigen Optionen. Für Leute, die Git älter als 1.8.5 benutzen, lesen Sie bitte Antwort von bstpierre unten .

5voto

Raman Sahasi Punkte 27475

Verwendung der Kombination pushd , git pull y popd können wir diese Funktionalität erreichen:

pushd <path-to-git-repo> && git pull && popd

Zum Beispiel:

pushd "E:\Fake Directory\gitrepo" && git pull && popd

4voto

jonescb Punkte 20889

Sie können ein Skript wie dieses schreiben:

cd /X/Y
git pull

Sie können sie etwa so benennen gitpull .
Wenn Sie lieber willkürliche Verzeichnisse anstelle von /X/Y :

cd $1
git pull

Dann können Sie es mit gitpull /X/Z
Und schließlich können Sie versuchen, Repositories zu finden. Ich habe eine ~/git Ordner, der Repositories enthält, und Sie können damit einen Pull auf alle Repositories durchführen.

g=`find /X -name .git`
for repo in ${g[@]}
do
    cd ${repo}
    cd ..
    git pull
done

2voto

dkinzer Punkte 30335

Wer wie ich versucht hat, dies über einen Drush-Befehl (Drupal-Shell) auf einem entfernten Server zu tun, kann die Lösung, die eine CD in das Arbeitsverzeichnis erfordert, nicht verwenden:

Stattdessen müssen Sie die Lösung verwenden, die den Pull-Vorgang in ein Fetch & Merge aufteilt:

drush @remote exec git --git-dir=/REPO/PATH --work-tree=/REPO/WORKDIR-PATH fetch origin
drush @remote exec git --git-dir=/REPO/PATH --work-tree=/REPO/WORKDIR-PATH merge origin/branch

1voto

John Ballinger Punkte 7184

Dies könnte ein ähnliches Problem sein, aber Sie können auch einfach Ihre Befehle verketten. z.B.

Auf einer Linie

cd ~/Sites/yourdir/web;git pull origin master

Oder über SSH.

ssh username@atyourserver.com -t "cd ~/Sites/thedir/web;git pull origin master"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X