2011-09-12 15 views
40

Mam 2 gałęzie, które nie są jeszcze gotowe do scalenia, ale mają dodatkową logikę, którą chciałbym przejrzeć (przed scaleniem).Czy jest możliwe wyświetlenie wielu gałęzi git w tym samym czasie dla tego samego projektu?

Czy mogę sprawdzić wiele gałęzi git tego samego projektu? Czy to możliwe?

+0

Będziesz mógł to zrobić z Git 2.5+ i jego nową komendą 'git checkout --to = '. Zobacz [moja odpowiedź poniżej] (http://stackoverflow.com/a/30186481/6309). – VonC

+0

Rzeczywista składnia to 'git worktree add '. Zaktualizowałem [moja odpowiedź poniżej] (http://stackoverflow.com/a/30186481/6309). – VonC

Odpowiedz

36

Możesz po prostu skopiować repozytorium do nowej lokalizacji (przez dosłowne skopiowanie katalogu lub używając git clone --shared) i sprawdzić jedną gałąź dla każdej lokalizacji.

Można również użyć git-worktree do tworzenia wielu katalogów roboczych z pojedynczej instancji repozytorium.

W przeciwnym razie podstawowym sposobem porównywania plików między oddziałami przed ich scaleniem jest git diff.

+3

Uwaga: zdaję sobie sprawę, że Twoja odpowiedź została dzisiaj odrzucona (http://stackoverflow.com/posts/7393302/timeline), ale nie obniżyłem jej;) Po prostu (2 lata temu) wskazałem nowe polecenie git worktree. – VonC

1

Pierwszą rzeczą, która przychodzi mi na myśl, aby sprawdzić każdy oddział w oddzielnym projekcie. Tak więc: 1. Zamówienie odgałęzienie A na pierwotnym klonie (1) 2. utworzyć nowy klon (2) 3. Zamówienie oddział B w klonie 2

drugie podejście mogłoby być stworzenie nowego oddziału (aka C) i połączyć do niego zarówno gałąź A, jak i B. Jeśli są one bezpłatne, może to pomóc w ocenie.

-1

Jak już wspomniano, można diff oddziałów z git diff:

git diff [--options] <commit> [--] [<path>…] 

This form is to view the changes you have in your working tree relative to the named <commit>. You can use HEAD to compare it with the latest commit, or a branch name to compare with the tip of a different branch. 

Fragment powyżej jest z dokumentacją Git.

1

Tak, jest to możliwe z należytą starannością. Jednak odbierasz jedną z kopii "z dala" od zwykłego katalogu git, używając opcji --work-tree=<path>, więc zmiany nie będą widoczne przez git, chyba że specjalnie to powiesz. Podałem tutaj przykład single-working-branch-with-git - zobacz segment UPDATED.

Należy pamiętać, że git-new-workdir nie działa w systemie Windows XP, ponieważ wymaga linków w stylu Unix.

6

Z Git 2.5+ (Q2 2015), repo Git wesprze wiele drzew pracujących z git worktree add <path> (i że zastąpi contrib/workdir/git-new-workdir)

Te "połączony" drzewa robocze są rzeczywiście zapisywane w głównym repo nowego folderu $GIT_DIR/worktrees (tak, aby działał na dowolnym systemie operacyjnym, w tym Windows).

Zobacz więcej w "Multiple working directories with Git?"

+0

Zauważ, że w przeciwieństwie do git-new-workdir, git worktree nie pozwala na tworzenie wielu stron dla tego samego oddziału:/ – NikiC

+2

@NikiC Możesz przez dodanie flagi '--force' (' -f' również działa) zgodnie z [dokument] (https://git-scm.com/docs/git-worktree#_options) –

-1

Teraz git zawiera polecenie worktree zrobić dokładnie to.

Powiązane problemy