V současné době se učím používat Git čtením Pro Git . Právě teď se učím o větvení a značkách. Moje otázka je, kdy mám použít větev a kdy mám použít značku?
Řekněme například, že vytvořím větev pro verzi 1.1 projektu. Když dokončím a vydám tuto verzi, mám opustit větev, abych označil verzi? Nebo mám přidat značku? Pokud přidám značku, mám odstranit větev verze (za předpokladu, že je sloučena do hlavní nebo jiné větve )?
Odpověď
Stručně: Osvědčeným postupem je odbočit, často sloučit a udržovat vždy synchronizaci .
Existují docela jasné konvence, jak udržet váš kód v samostatných větvích od hlavní větve:
- Chystáte se provést implementaci zásadní nebo rušivé změny
- provést některé změny, které se nemusí použít
- Chcete experimentovat s něčím, o čem si nejste jisti, že to bude fungovat
- Když vám někdo řekne, aby se rozvětvil, ostatní by mohli mít něco, co musí udělat v masteru.
Pravidlo je po větvení, měli byste se synchronizovat s masterem větev. Protože nakonec to musíte spojit zpět, abyste to zvládli. Abyste se při slučování zpět vyhnuli obrovskému komplikovanému konfliktu, měli byste se často zavázat, často sloučit.
Dobré postupy, které je třeba dodržovat
Úspěšný model větvení Git od Vincent Driessen má dobré návrhy. Pokud vás tento model větvení láká, zvažte rozšíření toku do git . Jiní komentovali tok .
Postupy značkování
Jak již víte, Git vám dá identifikátory potvrzení jako 1,0 -2-g1ab3183, ale nejde o značky! Označování se provádí pomocí značky git a značky, které se vytvářejí pomocí značky git, jsou základem pro identifikátory potvrzení, které git description vytváří. Jinými slovy, v Gitu nemáte větve značek. Označujete revize. Je správné říci, že značka je pouze anotovaným ukazatelem na potvrzení.
Pojďme se podívat na praktický příklad, který to demonstroval,
/-- [v1.0] v ---.---.---.---S---.---A <-- master \ \-.---B <-- test
Nechť „s“ potvrzení „S“ bude potvrzení potvrzeno značkou „v1.0“. Toto potvrzení je jak na větvi „master“, tak na větvi „test“. Pokud spustíte " git description " nad potvrzením “ „(Horní část„ hlavní “větve) byste dostali něco jako v1.0-2-g9c116e9
. Pokud spustíte " git description " nad příkazem „B“ (alias „testovací“ větev), dostanete něco jako v1.0-2-g3f55e41
, to je případ výchozí konfigurace git-description. Tento výsledek se mírně liší. v1.0-2-g9c116e9
znamená, že jsme při spáchání s roztříděným ID SHA-1 9c116e9
, 2 se zavazuje za značkou v1.0
. Neexistuje žádný tag v1.0-2
!
Pokud chcete, aby se váš tag zobrazoval pouze na větvi „master“, můžete vytvořit nové potvrzení (např. Pouze aktualizovat default / fallback) informace o verzi v GIT-VERSION-FILE) za bodem větvení větve „test“. Pokud tag potvrdíte na „testovací“ větvi např. „v1.0.3` to by bylo viditelné pouze z„ testu “.
Odkazy
Našel jsem mnoho, mnoho užitečných blogů a příspěvků, z nichž se mohu poučit. Avšak ty, které jsou profesionálně ilustrované, jsou vzácné. Chtěl bych tedy doporučit příspěvek – Úspěšný model větvení Git od @nvie. Jeho ilustraci jsem si vypůjčil:)
Komentáře
- 1.0-2-g1ab3183 je identifikátor vytvořený pomocí git description z informací dostupných z git, ale jeho volání identifikátoru git je trochu moc. Git identifikuje pomocí hash SHA; tagy a větve jsou lidské konstrukty, o kterých git snadno sleduje. Jako takový vytvořte tag když si myslíte, že nějaký člověk si jednoho dne přeje najít vhodnou záložku ke spáchání.
- nádherná ilustrace multidimenzionálnosti ve vesmíru git. krásná. díky
- stojí konstatuje, že mnoho projektů některé nepotřebuje pruhů zobrazených v tomto diagramu. Některé projekty potřebují pouze to, co se ' nazývá vývoj a funkce zde. To často platí pro webové aplikace, které lze nasadit dle libosti.
- Dokonce i autor git flow to již nedoporučuje pro mnoho typů projektů, jako je vývoj webových aplikací. Mnoho lidí věří, že je mnohem složitější, než drtivá většina projektů potřebuje, takže je obtížné jej realizovat a snadno se mýlit.Na druhém konci spektra používají některé týmy advokátů pro pokročilé praktiky ' kmenový vývoj ', který téměř nikdy nepoužívá pobočky, a realizovat takové úspěšné projekty. U něčeho přechodného zvažte " anti-gitflow '
odpověď
Větev se používá, pokud máte současně 2 různé verze úložiště. Značka je způsob, jak ve svém úložišti označit bod v čase.
Měli byste přidat značku k označení vydané verze. Pokud pak potřebujete opravit chyby v tomto vydání, vytvořili byste větev na značce.
Chcete smazat pouze větve, které byly sloučeny zpět do HEAD [nebo nějaké jiné větve].
Komentáře
- oh … a předpokládám, že máte na mysli, že větev je sloučena do jiné větve, například hlavní. HEAD se pohybuje pokaždé, když provedu pokladnu, že?
- HEAD obvykle ukazuje na větev (pokud ' nejste v odpojeném režimu HEAD), takže HEAD se pohybuje s větev, na kterou ukazuje