2012-04-20 13 views
52

Chciałbym dokonać commit i zamknąć jego oddział, bez usuwania go z historii.Jak zamknąć oddział BEZ usunięcia go z historii w git?

Z mercurialem byłbym commit --close-branch, następnie update na poprzedni i kontynuowałem pracę. Z git ... Jestem zdezorientowany.

+1

_Needless powiedzieć, szukając tych słów kluczowych, które przeważnie znalazłem na odwrót, tj. ludzi, którzy chcą usunąć rzeczy z historii._ –

+1

Myślę, że to, co sprawia, że ​​jest to mylące, to terminologia. W git nie sądzę, że kiedykolwiek zamknął oddział. Co dokładnie robi "bliski oddział" w merkurialnym? – MikaelHalen

+2

Jeden niesamowity efekt zamknięcia gałęzi w merkurialnym to: nikt nie może dalej naciskać na tę głowę. - Czy jest jakiś sposób na to? –

Odpowiedz

70

Nie ma dokładnego odpowiednika zamknięcia gałęzi w Git, ponieważ gałęzie Git są lżejsze niż w Mercurial. Ich odpowiednik Mercurial to więcej zakładek niż gałęzi.

Jeśli dobrze rozumiem, zamknięcie gałęzi w Mercurial z grubsza powoduje, że znika z listy gałęzi, więc można osiągnąć to samo, archiwizując ją. usual practice jest, aby oznaczyć swoją końcówkę jako archiwum i usuń go:

git tag archive/<branchname> <branchname> 
git branch -d <branchname> 
git checkout master 

Oddział zostaną usunięte i mogą być pobrane później poprzez sprawdzanie tag i odtworzenie oddziału:

git checkout archive/<branchname> 
git checkout -b new_branch_name 
+0

Przynajmniej w git 1.9.1 musiałem użyć 'git branch -D' zamiast' -d'. –

+0

Opcja -D jest wymagana, jeśli odpowiednia gałąź nie została jeszcze w pełni scalona z wzorcem. – Simeon