Git 2.5+ (Q2 2015) będzie to oficjalnie wspierać dzięki nowej komendzie git checkout --to=<path>. Zobacz moją odpowiedź poniżej .
VonC
2
W rzeczywistości polecenie będzie git worktree add <path> [<branch>](Git 2.5 rc2)
VonC
Odpowiedzi:
156
Git 2.5+ (drugi kwartał 2015) obsługuje tę funkcję!
Jeśli masz repozytorium git cool-app, przejdź do root ( cd cool-app), uruchom git worktree add ../cool-app-feature-A feature/A. To sprawdza oddział feature/Aw nim własnego nowego katalogu dedykowanego, cool-app-feature-A.
Zastępuje to starszy skrypt contrib/workdir/git-new-workdir, bardziej niezawodnym mechanizmem, w którym te „połączone” drzewa robocze są w rzeczywistości zapisywane w nowym $GIT_DIR/worktreesfolderze głównego repozytorium (dzięki czemu działają na każdym systemie operacyjnym, w tym Windows).
Ponownie, po sklonowaniu repozytorium (w folderze takim jak /path/to/myrepo), możesz dodać drzewa robocze dla różnych gałęzi w różnych niezależnych ścieżkach ( /path/to/br1, /path/to/br2), jednocześnie mając te drzewa robocze połączone z historią głównego repozytorium (nie ma już potrzeby korzystania z --git-diropcji)
prosty skrypt do tworzenia katalogu roboczego, który używa dowiązań symbolicznych do wskazywania istniejącego repozytorium. Pozwala to na posiadanie różnych gałęzi w różnych katalogach roboczych, ale wszystkie z tego samego repozytorium.
W zasadzie wykona klonowanie git i zastąpi konfigurację (aby "spojrzeć" na oryginalne repozytorium, więc pull / push przejdzie do "głównego" repozytorium), ale jest wystarczająco prosty, aby służyć jako abstrakcja z faktycznego ładowania początkowego.
Jednak bardzo trudno jest obsługiwać wiele drzew roboczych za pomocą identyfikatorów. Na przykład jest to żądanie rozszerzenia w JGet (identyfikator zaćmienia) w celu obsługi drzewa roboczego.
Musisz więc ręcznie zarządzać projektem (wiersz poleceń) z wieloma problemami lub pracować z jednym drzewem roboczym w środowisku IDE.
Na razie ta odpowiedź jest nieprawidłowa. Zaktualizuj odpowiedź.
narendra-choudhary
-2
Niezupełnie, ponieważ Git obsługuje tylko jedną kopię roboczą danych repozytorium w katalogu repozytorium.
Jeśli chcesz zatwierdzać / ściągać do tego samego repozytorium z dwiema różnymi kopiami roboczymi, możesz utworzyć czyste repozytorium i sklonować je do dwóch kopii roboczych .
Za każdym razem, gdy coś skończyłeś, po prostu wypychasz do „głównego” czystego repozytorium.
git checkout --to=<path>
. Zobacz moją odpowiedź poniżej .git worktree add <path> [<branch>]
(Git 2.5 rc2)Odpowiedzi:
Git 2.5+ (drugi kwartał 2015) obsługuje tę funkcję!
Jeśli masz repozytorium git
cool-app
, przejdź do root (cd cool-app
), uruchomgit worktree add ../cool-app-feature-A feature/A
. To sprawdza oddziałfeature/A
w nim własnego nowego katalogu dedykowanego,cool-app-feature-A
.Zastępuje to starszy skrypt
contrib/workdir/git-new-workdir
, bardziej niezawodnym mechanizmem, w którym te „połączone” drzewa robocze są w rzeczywistości zapisywane w nowym$GIT_DIR/worktrees
folderze głównego repozytorium (dzięki czemu działają na każdym systemie operacyjnym, w tym Windows).Ponownie, po sklonowaniu repozytorium (w folderze takim jak
/path/to/myrepo
), możesz dodać drzewa robocze dla różnych gałęzi w różnych niezależnych ścieżkach (/path/to/br1
,/path/to/br2
), jednocześnie mając te drzewa robocze połączone z historią głównego repozytorium (nie ma już potrzeby korzystania z--git-dir
opcji)Zobacz więcej w „ Wiele katalogów roboczych z Gitem? ”.
Po utworzeniu drzewa roboczego możesz go przenieść lub usunąć (z Git 2.17+, Q2 2018).
źródło
Spójrz na $ GIT_SRC_DIR / contrib / workdir / git-new-workdir .
źródło
Proponuję mój mały skrypt http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
W zasadzie wykona klonowanie git i zastąpi konfigurację (aby "spojrzeć" na oryginalne repozytorium, więc pull / push przejdzie do "głównego" repozytorium), ale jest wystarczająco prosty, aby służyć jako abstrakcja z faktycznego ładowania początkowego.
źródło
Jak powiedział nasz przyjaciel VonC pięć miesięcy temu, teraz od wersji 2.5.x pojawiła się nowa funkcja, która spełnia swoje zadanie. git workktree .
źródło
Git obsługuje wiele drzew roboczych w tym samym czasie. Więcej informacji:
Jednak bardzo trudno jest obsługiwać wiele drzew roboczych za pomocą identyfikatorów. Na przykład jest to żądanie rozszerzenia w JGet (identyfikator zaćmienia) w celu obsługi drzewa roboczego.
Musisz więc ręcznie zarządzać projektem (wiersz poleceń) z wieloma problemami lub pracować z jednym drzewem roboczym w środowisku IDE.
źródło
Niezupełnie, ponieważ Git obsługuje tylko jedną kopię roboczą danych repozytorium w katalogu repozytorium.
Jeśli chcesz zatwierdzać / ściągać do tego samego repozytorium z dwiema różnymi kopiami roboczymi, możesz utworzyć czyste repozytorium i sklonować je do dwóch kopii roboczych .
Za każdym razem, gdy coś skończyłeś, po prostu wypychasz do „głównego” czystego repozytorium.
Kilka wskazówek:
man git-clone
git clone --bare
źródło
git-new-workdir
.