2012-03-21 12 views
5

Chcę dodać i zatwierdzić plik w git bez zmiany mojego bieżącego katalogu roboczego. czy to możliwe?Jak mogę dodać plik bez zmiany bieżącego katalogu roboczego?

> pwd 
/tmp 

> git --git-dir=/tmp/git_test/.git init 
Initialized empty Git repository in /tmp/git_test/.git/ 

> ls /tmp/git_test 
commit1 

> git --git-dir=/tmp/git_test/.git add /tmp/git_test/commit1 
fatal: '/tmp/git_test/commit1' is outside repository 

> git --git-dir=/tmp/git_test/.git add commit1 
fatal: pathspec 'commit1' did not match any files 

(git add -A wydaje się korzystać z bieżącego katalogu roboczego, zamiast argumentu do --git-dir)

+0

Może to być "oszustwo", ale uruchomienie '(cd/tmp/git-test; git add commit1)' pozostawi twoją zewnętrzną powłokę w tym samym katalogu co przed utworzeniem podpowłoki która uruchamia wszystko wewnątrz ' (...) ". –

+0

Odpowiedzi udzielone gdzie indziej w Stack Overflow: http: //stackoverflow.com/questions/1386291/git-git-dir-not-working-as-expected – dnw

Odpowiedz

12

Przegapiłeś opcję: --work-tree. Jeśli jesteś poza repozytorium, trzeba dostarczać zarówno tym i --git-dir:

--work-tree=<path>

Ustaw ścieżkę do drzewa roboczego. Może to być ścieżka bezwzględna lub ścieżka w stosunku do bieżącego katalogu roboczego. Można to również kontrolować, ustawiając zmienną środowiskową GIT_WORK_TREE i zmienną konfiguracyjną core.worktree (patrz core.worktree in git-config (1), aby uzyskać bardziej szczegółową dyskusję).

+0

Dzięki! Właśnie tego chciałem. – dnw

+0

jeśli jest to właściwa odpowiedź, proszę nadać @Jefromi kredyt i zaznaczyć ("sprawdź") jako poprawną odpowiedź. –

+1

@FlakDiNenno Kształcenie nowych użytkowników jest z pewnością dobre, ale to pytanie ma dwa lata, a PO nie był widoczny od półtora roku. – Cascabel

Powiązane problemy