2012-03-12 13 views
9

pwd to "obecny katalog roboczy". Oto sytuacja.git pull dla lokalnego repozytorium w podanej lokalizacji (zamiast pwd)

pwd:   /path/to/pwd/ 
git repository: /repo/path/.git/ 

Chcę zrobić ciągnięcie git od początku, ale bez zmiany mojego bieżącego katalogu.

Aby wyjaśnić trochę bardziej w przypadku nie jestem wystarczająco jasne, jest to wynik, którego chcę, ale chcę to zrobić za pomocą jednego polecenia zamiast konieczności zmiany katalogów:

$ cd /repo/path 
$ git pull origin master 
$ cd - 
+0

Jaki jest tego pożytek? (Jestem po prostu ciekawy.) – KajMagnus

+0

@KajMagnus To było ponad 5 lat temu, szczerze mówiąc nie pamiętam. Prawdopodobnie coś w rodzaju chęci aktualizacji repo za pomocą jednej linijki, więc mógłbym użyć '^ r', aby uruchomić go wielokrotnie w razie potrzeby i bez zepsucia stosu katalogów, ponieważ często używam' pushd', 'popd' i' cd ". – Matthew

+1

Możliwy duplikat [git --git-dir nie działa zgodnie z oczekiwaniami] (http://stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected) – pjgranahan

Odpowiedz

18
git --work-tree=/repo/path --git-dir=/repo/path/.git pull origin master 
+0

Jest to dość trudne do zastosowania w obecnej formie. Czy możesz podać przykład publicznego repozytorium? – Cognitiaclaeves

+0

@Cognitiaclaeves, nie wiesz, co masz na myśli przez "trudny do zastosowania"? Wypróbowałem to i "po prostu zadziałało". Powinien działać z każdym repozytorium, do którego masz dostęp zbyt publiczny lub nie. –

4

bash -c "cd/repo/path; git pull origin master"

+0

Czy naprawdę nie ma opcji git dla tego? Git eksploduje wraz z funkcjonalnością, wydaje się trudno uwierzyć, że MUSISZ mieć swój katalog roboczy w lokalizacji repozytorium lub jego podkatalogu. – Matthew

+0

Och, nie mam pojęcia. Jeśli jest sposób, że jestem uszy! :) Chciałem tylko dać ci jedną linijkę. – sethcall

+0

nie trzeba używać 'bash -c', możesz użyć' (list) 'do wykonania listy w podpowłoce:' (cd/repo/path; git pull origin master) ' –

Powiązane problemy