Programování

5 pokročilých příkazů Git pro vylepšení vaší hry Git

Pokud jste dnes vývojářem, pravděpodobně jste se naučili Git, systém správy verzí v srdci moderních softwarových pracovních toků. Znáte základy - jak fungují úložiště, jak vytvářet větve a provádět změny a jak tyto změny sloučit a vyžádat žádosti.

Ale teď, když znáte základy, je čas trochu se o úroveň výš - využít některé z výkonnějších funkcí Gitu ve vašem pracovním toku. Tady je pět pokročilých funkcí Git, které jsou součástí vašeho současného i budoucího vývoje.

Zjednodušte historii potvrzení pomocí git rebase

Pokud máte v projektu dvě větve (např. Vývojovou větev a hlavní větev), obě mají změny, které je třeba kombinovat, git sloučit příkaz je přirozený a přímý způsob, jak je sjednotit. A spojit přidá historii vývoje jedné větve jako sloučení do druhé. I když to zachovává obě historie v úplných detailech, může to ztěžovat sledování celkové historie projektu. V některých případech možná budete chtít jednodušší a čistší výsledek.

The git rebase příkaz také sloučí dvě větve, ale dělá to trochu jinak. A git rebase přepíše historii potvrzení jedné větve tak, aby byla do ní druhá větev začleněna od bodu, kde byla vytvořena. Díky tomu je pro tuto větev méně hlučná a lineárnější historie potvrzení. Ale také to znamená, že jsou odstraněny potenciálně užitečné podrobnosti o druhé větvi a procesu sloučení.

Do toho konce, rebase se nejlépe používá, když máte více soukromé větve, které chcete sloučit do jediné čisté historie potvrzení, než je sloučíte s veřejnou pobočkou. Tímto způsobem získáte plnou výhodurebase - učinit historii revizí lineárnější a méně hlučnou - aniž by byly překryty důležité podrobnosti o historii revizí vašeho projektu.

Vyčištění se spojí s git merge - squash

Další způsob, jak provést slučování a následné potvrzení, méně hlučný, je použití --squash možnost v git sloučit. --squash vezme všechny závazky z příchozí pobočky a sloučí je do jediného konsolidovaného potvrzení.

Krása sloučeného sloučení spočívá v tom, že si můžete vybrat, jak použít výsledné fázované soubory. Můžete jen potvrdit celou sadu změn jako jednu, nebo můžete zavázat několik souborů najednou, kde změny úzce souvisejí. Sloučené sloučení je také užitečné, pokud je historie potvrzení příchozí větve užitečná pouze v kontextu této větve, nebo pokud je ze soukromé větve, která bude stejně zahozena.

Stejně jako u rebase, tato technika funguje nejlépe pro spáchání vnitřní větve zvládnout, ale je také vhodné pro požadavky na tah, pokud je to potřeba.

Zrychlete vyhledávání chyb pomocí git bisect

Subtilní regrese v kódu jsou nejtěžší na rozdávání. Představte si, že jste právě přidali test do své kódové základny k pronásledování chyby, ale nejste si jisti, kdy se chyba poprvé objevila ... a ve svém úložišti máte stovky nebo dokonce tisíce závazků. Thegit bisect Příkaz umožňuje výrazně snížit množství kódu, který musíte hledat, abyste našli potvrzení, které chybu vytvořilo.

Když povolíte půlit (git bisect start) určíte dva body ve své kódové základně pro svázání vyhledávání: jeden, o kterém víte, že je špatné (HLAVA, obvykle), a ten, kde víte, že věci byly stále dobré. půlit zkontroluje spáchání na půli cesty mezi špatným a dobrým a umožní vám spustit testy. Tento proces binárního dělení se opakuje, dokud se neobjeví potvrzení, které rozbilo věci.

git bisect je dar z nebes pro velké databáze kódů s dlouhými a složitými historiemi spáchání, což vám ušetří potíže s nutkáním procházet každým posledním spácháním v naději, že svou chybu dříve či později najdete. Na velmi přinejmenším snižuje o polovinu množství vyhledávání a testování, které musíte udělat.

Znovu použít s git cherry-pick

Mnoho pokročilých sakra příkazy jsou užitečné pouze za úzce specifických okolností a jsou bezpečně ignorovány i mírně pokročilými uživateli. Ale když narazíte na jednu z těchto konkrétních okolností, vyplatí se je znát.

Zvážit git cherry-pick. Umožňuje vám převzít daný závazek - jakýkoli závazek z jakékoli větve - a použít jej na jinou větev, aniž byste museli použít jakékoli další změny z historie tohoto potvrzení. To je užitečné za několika klíčových okolností:

  • Zavázali jste se ke špatné větvi a chcete ji rychle použít na tu správnou.
  • Chcete použít opravu z větve do kufru, než budete pokračovat v dalších pracích na kódu kufru.

Všimněte si, že máte nějaké možnosti kromě přímého použití potvrzení, když třešeň to. Pokud projdete kolem --no-spáchat Možnost, například třešňový výběr se umístí do pracovní oblasti aktuální větve.

Elegantně organizujte projekty pomocí submodulů Git

Stejně jako většina programovacích jazyků poskytuje způsob importu balíků nebo modulů, Git nabízí způsob, jak automaticky zahrnout obsah jednoho úložiště do jiného, submodul. Můžete vytvořit podadresář uvnitř repo a automaticky jej naplnit obsahem jiného repo, obvykle odkazem na konkrétní hash pro potvrzení kvůli konzistenci.

Všimněte si, že submoduly Git fungují nejlépe za následujících podmínek:

  • Dotyčné podmoduly se často nemění nebo jsou uzamčeny ke konkrétnímu potvrzení. Jakákoliv práce na spíše než submodul s submodul, by měl být spravován samostatně.
  • Každý používá verzi Git, která podporuje dílčí moduly a rozumí postupům potřebným pro práci s nimi. Například adresáře submodulů se ne vždy automaticky naplní obsahem úložiště submodulů. Možná budete muset použít aktualizace submodulu git příkaz v repo, aby vše bylo aktuální.