Kiedy jest odpowiedni czas, aby usunąć gałąź funkcji git?

Nie chcę skończyć z 82 gałęziami funkcji wiszącymi wokół , więc zastanawiam się, jakie są potencjalne wady po prostu usunięcia gałęzi funkcji, gdy tylko połączę ją z master.

Workflow:

git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
Jakieś problemy?
Author: Md. Abu Nafee Ibna Zahid, 2010-08-03

5 answers

Usuń po połączeniu jest zwykłym sposobem. Dlatego git branch -d sprawdza, czy gałąź jest w pełni scalona, zanim zostanie usunięta.

Jest kilka powodów, dla których mogę wymyślić, aby utrzymać gałąź: możesz chcieć ją zatrzymać na wypadek, gdybyś miał błędy powracające, gdy trafi do produkcji, lub możesz chcieć historycznego rekordu.

W każdym z tych przypadków, masz możliwość tagowania nagłówka gałęzi przed jej usunięciem. Znacznik jest jak gałąź, ponieważ jest wskaźnikiem do commita, z wyjątkiem kilku drobnych różnic: 1) porcelain zazwyczaj nie wyświetla znaczników w poleceniach rozpoznawczych, takich jak git show-branch lub tab-auto complete w checkout, 2) sprawdzanie jednego z nich umieszcza cię w oddzielonej (nie-ref) głowicy 3) możesz zostawić "wiadomość tagowania", co powoduje, że znacznik zostanie zapisany jako obiekt w magazynie obiektów, tak jak commit.

W ten sposób zachowujesz historię, a jeśli kiedykolwiek będziesz musiał naprawić błąd, polecam po prostu utworzenie nowej gałęzi z master dla napraw.

 49
Author: masonk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-17 15:17:25

Usuwam po scaleniu, ale zawsze robię git merge --no-ff, aby uniknąć szybkiego przekazywania, aby Historia gałęzi była widoczna na wykresie. Lubię mieć historię, gdzie gałąź fabularna odeszła od gałęzi deweloperskiej i gdzie się połączyła: {]}

Fast-forward

Jest to zaczerpnięte z udanego modelu rozgałęziania Gita autorstwa Vincenta Driessena, bardzo przyjemnego przepływu pracy do wykorzystania z Gitem, który aplikuję do większości moich projektów.

 81
Author: lkraider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-07 14:31:05

Mogę wymyślić dwa powody, dla których możesz chcieć zachować gałąź funkcji przez jakiś czas:

  • jest szansa, że zostanie wyrzucony z powrotem do pracy przez upstream.
  • inni deweloperzy prawdopodobnie chcą tej funkcji, nie chcąc wszystkiego innego w master.

W praktyce, większość czasu kasowanie po połączeniu jest w porządku.

 6
Author: Karl Bielefeldt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-02 23:29:55

Typowy przepływ pracy będzie

 // Create new branch
 $ git checkout -b myfeature
 // and then do some changes and commit them

 // Switch to master branch
 $ git checkout master

 // Merge myfeature to master. --no-ff will always keep branch information.
 $ git merge --no-ff myfeature

 // Delete myfeature branch
 $ git branch -d myfeature

 // Push the changes
 $ git push origin master
 5
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-13 17:01:10

Myślę, że jest to typowy przepływ pracy (usuwanie po połączeniu)

Edytuj Więc zamiast scalać, przynajmniej dla krótkotrwałych gałęzi, myślę, że chodzi o to, aby przełożyć je na master. następnie kończy się liniowa historia zmian, a cała gałąź staje się częścią głównego pnia. w tym przypadku masz tam wszystkie zmiany, więc najwyraźniej nie potrzebujesz kopii.

 1
Author: second,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-02 23:09:37