Gerrit/Výukový program
Tento výukový program vysvětluje, jak nainstalovat Git a používat jej k vytváření a úpravě požadavků na změny v Gerritu.
- Referenční dokumentaci ke konkrétním úlohám naleznete v části Gerrit/Pokročilé použití .
- Pokud si chcete procvičit, jak používat Gerrit bez psaní patche do "skutečného" softwarového projektu Wikimedie, použijte místo toho naši Testovací instanci Gerritu.
V tomto návodu začínají příkazy pro zadání znakem dolaru v poli, jako je tento: příkaz
.
Nezadávejte předvolbu $
.
Pokud příkaz obsahuje také proměnnou, kterou musíte sami změnit, pak se proměnná zobrazí červeně: command proměnná
.
Co je Git?
Git je bezplatný a otevřený zdroj distribuovaný systém správy verzí. "Distributed" (distribuován) znamená, že neexistuje žádná centrální kopie úložiště. S Git, jakmile naklonujete repozitář, máte k dispozici plně funkční kopii zdrojového kódu se všemi větvemi a označenými verzemi.
Vytvořte si vývojářský účet Wikimedie
Pokud ještě nemáte vývojářský účet Wikimedie, vytvořte si jej. Stejné uživatelské jméno a heslo bude použito pro přihlášení do Gerritu níže.
Nastavení Gitu
Tyto pokyny vysvětlují, jak nainstalovat Git jako nástroj příkazového řádku (okna terminálu). Pokud dáváte přednost grafickému uživatelskému rozhraní (GUI) místo příkazového řádku, podívejte se na seznam klientů spravovaných projektem Git. Další pokyny k instalaci naleznete v oficiální dokumentaci.
Instalace
Postupujte podle Instalace Gitu a zjistěte, jak nainstalovat Git do operačního systému.
Nakonfigurování Gitu
git config -l
.Nyní, když máte nainstalovaný Git, je čas nakonfigurovat vaše osobní údaje. Měli byste to udělat pouze jednou. Své osobní údaje můžete také kdykoli změnit opětovným spuštěním těchto příkazů.
Git sleduje, kdo provedl každý závazek, kontrolou jména a e-mailu uživatele. Kromě toho se tyto informace používají k přidružení vašich závazků k vašemu účtu Gerrit.
Zadejte dva níže uvedené příkazy a nastavte své uživatelské jméno a e-mailovou adresu. Nahraďte Gerrituser uživatelským jménem svého účtu vývojáře Wikimedie (toto bylo dříve známé jako uživatelské jméno "Wikitech", "Gerrit" nebo "LDAP", všechny jsou stejné). Nahraďte gerrituser@example.com svou vlastní e-mailovou adresou. A nahraďte shell_user uživatelským jménem shellu (zvoleným při vytváření účtu vývojáře Wikimedie):
git config --global user.email "gerrituser@example.com"
git config --global user.name "Gerrituser"
git config --global url."ssh://shell_user@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"
Nastavení klíčů SSH v Gerritu
K vytvoření zabezpečeného spojení mezi vaším počítačem a Gerritem používáme klíč SSH.
Bezpečnostní tým Wikimedie doporučuje, aby od srpna 2021 uživatelé vytvářející klíče SSH používali typ ed25519
pro optimální zabezpečení a výkon.
Získejte svůj klíč SSH
Postupujte podle Klíče SSH#Generování nového klíče SSH.
Přidejte veřejný klíč SSH do svého účtu Gerrit
- Přihlaste se do webového rozhraní pro Gerrit. Uživatelské jméno a heslo pro váš Gerrit jsou stejné jako pro váš účet vývojáře Wikimedie.
- Klikněte na své uživatelské jméno v pravém horním rohu a poté vyberte "Nastavení".
- V nabídce vlevo klikněte na "Klíče SSH".
- Vložte svůj veřejný klíč SSH do odpovídajícího pole a klikněte na "ADD NEW SSH KEY".
Test připojení Gerrit SSH
Připojte se k serveru Gerrit přes ssh
a zkontrolujte, zda vše funguje podle očekávání.
Nahraďte shell_user vaším uživatelským jménem shellu, jak je uvedeno v nastavení Gerritu:
ssh -p 29418 shell_user@gerrit.wikimedia.org
- Buďte opatrní a porovnejte, že "otisk klíče ed25519" je stejný jako SSH otisk na gerrit.wikimedia.org:29418. Pokud je to stejné, odpovězte "Ano" na otázku "Opravdu chcete pokračovat v připojení?". Poté zadejte přístupovou frázi pro váš klíč.
- Měli byste dostat zprávu "Vítejte v Gerrit Code Review". Na posledním řádku by mělo být uvedeno "Připojení k gerrit.wikimedia.org uzavřeno."
- Pokud narazíte na problémy, použijte
ssh -p 29418 -v shell_user@gerrit.wikimedia.org
(nahraďte shell_user vaším uživatelským jménem shellu).-v
poskytne podrobný výstup, který pomůže najít problémy. Pak si přečtěte Odstraňování problémů Gerrit.
Příklad zprávy o úspěšném připojení Gerrit SSH vypadá takto:
gerrituser@machine:/mw/sandbox$ ssh -p 29418 gerrituser@gerrit.wikimedia.org The authenticity of host '[gerrit.wikimedia.org]:29418 ([208.80.154.85]:29418)' can't be established. ed25519 key fingerprint is dc:e9:68:7b:99:1b:27:d0:f9:fd:ce:6a:2e:bf:92:e1. Are you sure you want to continue connecting (yes/no)? yes Warning permanently added '[gerrit.wikimedia.org]:29418 ([208.80.154.85]:29418)' (ed25519) to the list of known hosts. Enter passphrase for key '/home/gerrituser/.ssh/id_ed25519': **** Welcome to Gerrit Code Review **** Hi gerrituser, you have successfully connected over SSH. Unfortunately, interactive shells are disabled. To clone a hosted Git repository, use: git clone ssh://gerrit.wikimedia.org:29418/REPOSITORY_NAME.git Connection to gerrit.wikimedia.org closed. gerrituser@machine:/mw/sandbox$
Stáhněte si kód pomocí Git
Sandbox
Pokud byste si chtěli procvičit používání Gerritu, můžete si stáhnout (také nazývané "klonování") úložiště, které tento tutoriál používá, s názvem "sandbox".
Spusťte následující na příkazovém řádku Git Bash:
git clone https://gerrit.wikimedia.org/r/sandbox
Tím se zkopíruje celá historie a kódová základna úložiště rozšíření "sandbox" do vašeho počítače.
Budete mít pracovní adresář hlavní větve rozšíření (obvykle také nazývaný "git master").
Zadejte nový adresář (příkazem cd sandbox
).
Nyní se můžete podívat na kód a začít jej upravovat.
Stávající úložiště
Klonování repozitáře Sandbox vám nezíská nastavení vývojového prostředí ani spuštěnou instalaci MediaWiki. (Spuštění bude vyžadovat MediaWiki Core a umístění kódu, který jste odhlásili, na místo, které očekává váš webový server.) Podívejte se na Stáhnout z Git, kde najdete informace o tom, jak stáhnout MediaWiki Core, rozšíření, vzhledy nebo jakýkoli jiný projektový repozitář hostovaný na [$2 gerrit.wikimedia.org] z Gitu.
Vagrant
Pokud jste si stáhli MediaWiki nebo rozšíření pomocí Vagrant, ujistěte se, že máte nakonfigurován Git pro odesílání kódu pomocí SSH namísto HTTPS.
Připravte se na práci s Gerritem
Gerrit vyžaduje, aby vaše zpráva potvrzení měla "změnit ID".
Vypadají jako Change-Id: Ibd3be19ed1a23c8638144b4a1d32f544ca1b5f97
začínající I (velké i).
Pokaždé, když upravíte odevzdání za účelem vylepšení existujícího patche v Gerritu, toto ID změny zůstane stejné, takže ho Gerrit chápe jako novou "sadu oprav", která řeší stejnou změnu kódu.
Existuje doplněk Git s názvem git-review, který přidává řádek Change-Id
do vašich revizí.
Doporučuje se použít git-review.
Usnadňuje konfiguraci vašeho klonu Git, odeslání změny nebo načtení existující.
Instalace git-review
Všimněte si, že Wikimedia Gerrit vyžaduje git-review verze 1.27 nebo novější.
Další podrobnosti naleznete na stránce Gerrit/git-přezkoumání#Instalace.
- K instalaci balíčku
git-review
použijte grafický nástroj pro správu softwarových balíčků vaší distribuce Linuxu. - Pokud vaše distribuce nezabalila git-review, zkontrolujte git-review pro další možnosti, jako je instalace git-review pomocí instalačního programu balíku pip Python.
- Pokud používáte FreeBSD, nainstalování git-review přes porty.
- Viz git-review Windows.
- Pro OS X 10.11 El Capitan a novější postupujte podle Metody 1.
- Ve verzích před 10.11 použijte instalační program balíčku pip Python podle Metody 2.
Konfigurace git-review
Výchozí název vzdáleného hostitele Git je "origin". Tento název používají také projekty Wikimedie. Potřebujeme říct git-review, aby používali tohoto hostitele. Nahraďte gerrituser svým uživatelským jménem Gerrit:
git config --global gitreview.remote origin
git config --global gitreview.username gerrituser
Nastavení git-review
Po stažení ("klonování") úložiště jej musíte nastavit na git-review. K tomu dojde automaticky při prvním pokusu o odeslání odevzdání, ale obecně je lepší to udělat hned po klonování. Ujistěte se, že jste v adresáři projektu, který jste naklonovali (jinak se zobrazí chyba "fatal: Not a git repository" (nejedná se o úložiště git)). Poté spusťte tento příkaz:
git review -s --verbose
Ke konci výstupu byste měli vidět něco takového:
Found origin Push URL: ssh://gerrit.wikimedia.org:29418/PROJECT Fetching commit hook from: scp://gerrit.wikimedia.org:29418/hooks/commit-msg 2019-02-19 12:40:16.712892 Running: scp -P29418 gerrit.wikimedia.org:hooks/commit-msg .git/hooks/commit-msg
To vás může požádat o vaše uživatelské jméno Git, pokud se liší od uživatelského jména shellu, které používáte.
git-review
, můžete k odeslání opravy použít Gerrit patch uploader nebo Gerrit/Web tutorial.Ve výchozím nastavení git-review
používá větev master
.
Pokud repo, na kterém pracujete, používá jinou větev, např. main
, musíte nastavit konfigurační proměnnou gitreview.branch
.
To lze provést pomocí následujícího příkazu (kde main
je název větve):
git config --add gitreview.branch main
Odeslání opravy
Ujistěte se, že jste naklonovali úložiště kódu, o které máte zájem (viz výše Stažení kódu pomocí Gitu).
Ujistěte se, že jste v adresáři úložiště kódu (příkaz pwd
vám řekne, kde přesně jste).
Aktualizace hlavní vývojové větve
Ujistěte se, že hlavní vývojová větev (větev vytvořená při prvním klonování úložiště) je aktuální:
git pull origin master
Všimněte si však, že některá úložiště používají pro svou hlavní vývojovou větev jiný název (například main
místo master
nebo repozitář operations/puppet
má větev production
místo větve master
).
Vytvoření větve
Nejprve vytvořte místní pobočku pro vaši novou změnu.
Nahraďte BRANCHNAME níže krátkým, ale přiměřeně popisným názvem (např. T1234
, pokud pro vaše změny existuje odpovídající úkol Phabricator , cleanup-something
nebo badtitle-error
).
Ostatní lidé budou také používat toto jméno k identifikaci vaší pobočky.
git checkout -b BRANCHNAME origin/master
gerrituser@example:~/dev/mw$ git checkout -b cleanup-something origin/master # Switched to a new branch 'cleanup-something' gerrituser@example:~/dev/mw$ git branch * cleanup-something master
Tím vytvoříte novou větev (nazvanou BRANCHNAME) od nejnovějšího 'mastera' a zkontrolujete ji.
Ve výše uvedeném příkladu jsme tuto novou větev nazvali cleanup-something
.
Provedení změn
Proveďte změny v místním kódu.
Použijte svůj preferovaný textový editor a upravte soubor.
V níže uvedeném příkladu upravíme soubor README.md
a přidáme slovo.
Poté zavřete textový editor a zkontrolujte změny, které jste provedli od posledního odevzdání, v souborech a v adresáři:
git diff
gerrituser@machine:/mw/sandbox$ git diff diff --git a/README.md b/README.md index 1d25b27..bc54021 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Hello world! -You can make test changes and experiment with Gerrit in this repository! +You can make test changes and experiment with Wikimedia Gerrit in this repository! Don't worry about messing this repository up; it is meant for testing. gerrituser@machine:/mw/examples$
git diff
zobrazuje vaše změny v jednotném formátu rozdílu: Odebrané řádky mají předponu mínus (-
) a přidané řádky mají předponu plus (+
).
Tyto změny ještě nejsou "připraveny" (prostřednictvím git add
) pro příští potvrzení.
Připravte své změny pro potvrzení
Spusťte git status
a rozhodněte se, které z vašich změn by se měly stát součástí vašeho odevzdání.
Zobrazí se seznam všech souborů, které jste v adresáři změnili.
V tomto okamžiku výstup zobrazí jako poslední řádek "žádné změny nebyly přidány do odevzdání".
Použijte git add
, aby se vaše změněné soubory staly součástí vašeho příštího odevzdání.
Ve výše uvedeném příkladu jsme upravili soubor README.md
, takže příkaz bude:
git add README.md
Všechny soubory, které jste změnili a které jste nepředali do git add
, budou při spuštění git commit
v dalším kroku ignorovány.
git status
kdykoli prohlédnout.
Poté, co spustíte git add
, git status
již nebude ukazovat řádek "do potvrzení nebyly přidány žádné změny".git diff --cached
, abyste viděli, které změny jsou naplánovány a půjdou do dalšího potvrzení.
Výstup bude vypadat stejně jako u výše uvedeného příkazu git diff
.
Proveďte své postupné změny
Jakmile budete spokojeni se seznamem změn přidaných pomocí git add
, můžete tyto změny převést na potvrzení ve vašem místním úložišti pomocí
git commit
Short subject line More details. The blank line between the subject and body is mandatory. The subject line is used to represent the commit in code-review emails, search results, git-rebase, and more. Bug: T999999 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch cleanup-something # Your branch is up to date with 'origin/master'. # # Changes to be committed: # modified: README.md
Poté budete ve svém textovém editoru požádáni, abyste přidali popisné shrnutí vašeho odevzdání. Musíte se řídit pokyny k zaslání zprávy. To ostatní lidé uvidí, když se podívají na historii změn v úložišti kódu.
Uložte zprávu odevzdání a zavřete textový editor. Zobrazí se souhrn (ID odevzdání, váš předmět, změněné soubory a řádky).
Když zadáte git commit
, zavazujete se k vaší místní kopii.
Připravte se poslat svůj závazek Gerritu
Synchronizujte svůj changeset se všemi změnami, ke kterým mohlo dojít v hlavní větvi, když jste pracovali ("rebasing"). Z vaší pobočky spusťte:
git pull --rebase origin master
gerrituser@machine:/mw/sandbox$ git pull --rebase origin master From ssh://gerrit.wikimedia.org:29418/sandbox * branch master -> FETCH_HEAD Current branch cleanup-something is up to date. gerrituser@machine:/mw/sandbox$
git pull --rebase origin master
načte nové odevzdání ze vzdáleného místa a poté na nich znovu založí vaše místní odevzdání.
Dočasně odloží změny, které jste provedli ve vaší větvi, použije všechny změny, které se udály v hlavní větvi, na vaši pracovní větev, a poté všechny změny, které jste provedli, sloučí (znovu potvrdí) zpět do větve. Tím se vyhnete budoucím konfliktům při sloučení.
Navíc vám dává příležitost otestovat své změny proti nejnovějšímu kódu v masteru.Nyní jste připraveni odeslat svůj kód společnosti Gerrit ke kontrole. Pokud jste provedli několik souvisejících odevzdání, zvažte jejich sloučení do jediného odevzdání ke kontrole.
Odešlete svůj závazek Gerritu
Pokud jste postupovali podle #Připravte se na práci s Gerritem výše a nainstalovali jste git-review
a spustili git review -s
, pak příkaz k odeslání změn do Gerrit je:
git review
gerrituser@machine:/mw/sandbox$ git review Creating a git remote called 'gerrit' that maps to: ssh://gerrit.wikimedia.org:29418/sandbox.git Your change was committed before the commit hook was installed. Amending the commit to add a gerrit change id. remote: remote: Processing changes: new: 1, done remote: remote: New Changes: remote: https://gerrit.wikimedia.org/r/#/c/sandbox/+/563720 Test for https://www.mediawiki.org/wiki/Gerrit/Tutorial remote: To ssh://gerrit.wikimedia.org:29418/sandbox.git * [new branch] HEAD -> refs/for/master%topic=cleanup-something gerrituser@machine:/mw/examples$
Po úspěchu obdržíte potvrzení a odkaz na sadu změn v Gerritu. Ve výše uvedeném příkladu je tento odkaz: https://gerrit.wikimedia.org/r/#/c/sandbox/+/563720
Gratulujeme! Váš patch je v Gerritu a doufáme, že bude brzy zkontrolován!
<span id="If_git review
_fails">
Pokud git review
selže
Pokud budete při spuštění git review
požádáni o zadání svého uživatelského jména a hesla, znamená to, že Git ještě nebyl nakonfigurován pro používání SSH.
Projděte si kroky na #nastavení Gitu. Konkrétně spusťte následující příkaz:
git config --global url."ssh://shell_user@gerrit.wikimedia.org:29418/".insteadOf "https://gerrit.wikimedia.org/r/"
Pokud si nejste jisti, zda jste to již udělali, můžete jej spustit znovu. Nahraďte shell_user uživatelským jménem shellu pro váš účet vývojáře Wikimedie.
Pokud získáte Permission denied (publickey). fatal: Could not read from remote repository.
, přečtěte si pokyny na SSH keys#Add SSH Private key to use with Git , abyste se ujistili, že váš agent ssh běží a vaše identita je přidána. Pokud zavřete prostředí Git Bash, budete odhlášeni a budete muset pokaždé znovu postupovat podle těchto pokynů.
Zobrazení změny / další kroky
Otevřete odkaz na svůj changeset Gerrit ve webovém prohlížeči.
V části "Soubory" po kliknutí na šipku dolů napravo od libovolného souboru v seznamu můžete vidět rozdíl vašich změn na soubor: Staré řádky jsou zobrazeny červeně a nové řádky jsou zobrazeny zelenou barvou.
Pokud váš odevzdání adresuje tiket v Phabricator, bude komentář automaticky přidán do úlohy Phabricator, pokud jste postupovali podle pokynů pro zprávy Commit. Pokud jste to neudělali, můžete buď opravit zprávu o odevzdání (vytvořením aktualizované sady oprav), nebo ručně přidat komentář k lístku Phabricator, který obsahuje odkaz na vaši sadu změn v Gerrit.
Další běžné situace
Pokud zde vaše situace není pokryta, podívejte se také na Pokročilé použití Gerrit.
Squash několik odevzdání do jednoho jediného commitu přes rebase
Pokud jste před odesláním ke kontrole provedli několik souvisejících odevzdání do místního úložiště, měli byste tyto odevzdání zmáčknout (sloučit) do jednoho jediného potvrzení.
Volba --interactive
nebo -i
vám umožňuje změnit (přepsat) vaši historii odevzdání.
U každého odevzdání můžete upravit a změnit zprávu odevzdání, přidat nebo odebrat soubory nebo provést jiné úpravy.
Nejprve musíte Gitu sdělit, jak daleko zpět chcete táhnout. Chcete-li získat seznam všech změn ve vaší pobočce:
git rebase -i origin/master
Můžete také omezit zobrazený seznam posledních změn. HEAD~3
znamená stáhnout poslední tři potvrzení:
git rebase -i HEAD~3
Po zadání tohoto příkazu váš textový editor zobrazí vaše odevzdání v opačném pořadí a seznam dostupných příkazů:
pick aa8cf1d Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter. pick 38828e2 Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php pick be33007 Fix a typo # Rebase 95ccd28..be33007 onto 95ccd28 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #
Protože chceme poslat ke kontrole pouze jeden commit, zmáčkneme poslední dva commity do jednoho.
Změňte tedy všechny kromě prvního pick
na squash
:
pick aa8cf1d Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter. squash 38828e2 Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php squash be33007 Fix a typo
Když dokončíte vybírání a zmáčknutí a uložíte soubor, ve vašem textovém editoru se otevře další soubor, který vám umožní upravit a sloučit odevzdávané zprávy.
Dávejte pozor, abyste ponechali pouze jeden z řádků Change-Id
a aby bylo ve spodní části zprávy po jednom prázdném řádku.
Vaše zprávy z vašich předchozích odevzdání budou automaticky umístěny do této zprávy:
# This is a combination of 3 commits. # The first commit's message is: (mingle-fr-2012-69) Adding a custom filter for risky countries. Adding method customFilterFunctionGetRiskyCountryCodeScore() to GatewayAdapter. # This is the 2nd commit message: Adding $wgDonationInterfaceCustomFiltersFunctionsRiskyCountries to donationinterface.php # This is the 3rd commit message: Fix a typo Change-Id: I33e44ec0d93628d9a53c15e08eb89f352b7d5fe0 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # Not currently on any branch. # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: donationinterface.php # modified: gateway_common/gateway.adapter.php #
Nezapomeňte do odevzdání vložit svou (aktualizovanou) souhrnnou zprávu. V tomto případě bude nová souhrnná zpráva:
(mingle-fr-2012-69) Adding a custom filter for risky countries.
Change-Id
si vyberete.Pokud vše půjde dobře, měla by se zobrazit zpráva o úspěšném přehodnocení:
[detached HEAD 02f5e63] (mingle-fr-2012-69) Adding a custom filter for risky countries. 2 files changed, 92 insertions(+), 3 deletions(-) Successfully rebased and updated refs/heads/mingle-fr-2012-69.
Poté odešlete svůj patch ke kontrole:
git review
Měli byste vidět zprávu podobnou této, která ukazuje, že vaše recenze git byla odeslána Gerritu (v tomto příkladu na https://gerrit.wikimedia.org/r/7187):
remote: Resolving deltas: 100% (4/4) remote: (W) 02f5e63: commit message lines >70 characters; manually wrap lines remote: remote: New Changes: remote: https://gerrit.wikimedia.org/r/7187 remote: To ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DonationInterface.git * [new branch] HEAD -> refs/for/master/mingle-fr-2012-69
Úprava změny (vaše nebo někoho jiného)
Někdy může být potřeba upravit odeslanou změnu. Změnu můžete upravit, pokud ještě nebyla sloučena.
Můžete upravit své vlastní změny. Chcete-li upravit změny odeslané někým jiným, musíte být členem skupiny Gerrit's Trusted-Contributors (důvěryhodných přispěvatelů). Chcete-li se stát členem Trusted-Contributors, najděte někoho, kdo je členem, a požádejte ho, aby vás přidal. Skupina je virální v tom, že členové mohou přidávat nové členy, zodpovědně používající své pravomoci.
Nejprve zkontrolujte změnu pomocí tohoto příkazu:
git review -d changeNumber
Například: git review -d 1814356
Můžete se podívat do Gerritu a zjistit changeNumber. Je to číslo v adrese URL vaší stránky s kontrolou kódu.
Dále proveďte změny ve svém oblíbeném textovém editoru.
git add
soubory podle potřeby, pak potvrďte změnu (ujistěte se, že upravujete odevzdání):
git add Example/Example.body.php
git commit --amend
-m
k zadání souhrnu odevzdání: Tím se přepíše předchozí souhrn a znovu se vygeneruje Change-Id.
Místo toho použijte textový editor ke změně shrnutí odevzdání (v případě potřeby v souboru .git/COMMIT_EDITMSG
a ponechte řádek Change-Id nedotčený.Zatlačte na změnu:
git review
Rebasing (aktualizace opravy, aby zahrnovala další změny)
Někdy můžete chtít aktualizovat svůj patch tak, aby zahrnoval všechny změny v úložišti, ke kterým došlo od doby, kdy jste jej odeslali. Tomu se říká "rebasing" (přeměna). Obvykle to není třeba to dělat, ledaže by revize trvala dlouho a chcete se ujistit, že vaše změny stále fungují s nejnovější verzí softwaru, nebo pokud Gerrit nahlásí konflikt sloučení ve vaší změně.
Můžete to udělat lokálně pomocí příkazu git rebase
se správnými možnostmi, ale webové rozhraní Gerrit poskytuje pohodlnější způsob, jak to udělat.
V nejjednodušším scénáři stačí kliknout na "Rebase", ponechejte výchozí výběr "Rebase na horní části hlavní pobočky" a opět klikněte na "Rebase".
Pokud má vaše oprava konflikt sloučení, dostanete chybu. Poté můžete zkontrolovat možnost "Povolit Rebase s konflikty" a zkusit to znovu, což změní vaši opravu s konfliktními značkami, podobně jako ty, které vytvoří příkazy GIT. Poté to budete muset sami změnit a editovat soubory ručně, abyste vyřešili konflikty.
Někdy můžete také chtít, aby se aktualizovala vaše oprava, aby zahrnovala změny navržené v jiné opravě (přidání závislosti na této záplatě), ale které ještě nebyly sloučeny. V tomto případě místo toho vyberte "Rebase na konkrétní změně, ref nebo commitovat" a zadejte změnu ve vstupním poli.
Pokud vaše oprava již má takovou závislost, získáte také možnost vybrat "Rebase na horní části hlavní větve (rozbije relační řetězec)", abyste ji odstranili. Získáte také možnost zkontrolovat "Rebase All Acsortors", která opraví záplatu se závislostí.
Pokud používáte příkaz git rebase
, je nejlepší učinit aktualizace Rebase samostatnou opravou, takže recenzenti kódu mají snadnější čas vidět, jaké změny jste provedli a které změny se stalo v jiných záplatách.
Řešení problémů
Problémy a jak je vyřešit, najdete na stránce Gerrit/Odstraňování problémů .
Související odkazy
Tyto stránky jsou také užitečné:
Průvodce třetími stranami na Git
- Video výukové programy Jak používat git (na Wikimedia Commons)
- Zkus Git (interactivní demo)
- GitMagic Průvodce git s překlady
- Komunitní kniha Git opatrně vás zavede do problematiky. (Je těžké "získat" git, dokud nevíte něco o tom, jak to funguje interně.)
- Web Git s dokumentací
- Další užitečný průvodce OpenStack Git (pokud odečtete věci GitHub)
- Pochopení pracovního postupu Git od Benjamina Sandofského
- Používání Git v Eclipse