2.3 Bazoj de Git - Rigardante la Transdona Historio
Montrante kiel Transdoni Historion
Post vi kreis plurajn interna, aŭ se vi klonita deponejo kun ekzistanta fari historion, vi probable volas rerigardi vidi kio okazis. La plej baza kaj potenca ilo por fari ĉi estas lagit log komando. Tiuj ekzemploj uzas tre simpla projekto nomita
simplegit ke mi ofte uzas por manifestacioj. Akiri la projekto, kuri git clone git://github.com/schacon/simplegit-progit.git
Kiam vi kuros git log en tiu projekto, vi devus akiri eliron kiu aspektas io tiamaniere: $ git log commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 10:31:28 2008 -0700 first commit
Defaŭlte, sen argumentoj, git log listigas la interna farita en tiu deponejo en inversa kronologia ordo. Tio estas, la plej lastatempa interna aperas unue.
Kiel vi povas vidi, ĉi komando listoj ĉiu faras kun lia SHA-1 checksum,
la aŭtora nomo kaj retpoŝto, la dato skribita kaj commit mesaĝo. Grandega kvanto kaj vario de ebloj al la
git log komando estas havebla montri vin ĝuste kio vi estas serĉanta. Tie, ni montros al vi kelkajn el la plej uzataj opcioj. Unu el la pli utilaj ebloj estas
-p , kiu montras la malsamoj enkondukitaj en ĉiu faras. Vi povas ankaŭ uzi -2 , kiu limigas la produktadon al nur la lastaj du eniroj: $ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,5 +5,5 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gee-mail.com commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code diff --git a/lib/simplegit.rb b/lib/simplegit.rb index a0a60ae..47c6340 100644 --- a/lib/simplegit.rb +++ b/lib/simplegit.rb @@ -18,8 +18,3 @@ class SimpleGit end end - -if $0 == __FILE__ - git = SimpleGit.new - puts git.show -end \ No newline at end of file
Tiu opcio vidigas la saman informon sed kun malsamoj rekte sekvante ĉiu eniro. Tiu estas tre helpema por kodo revizio aŭ por rapide navigi kio okazis dum serio de interna ke kunlaboranto aldonis. Foje ĝi estas pli facile revizii ŝanĝojn sur la vorto nivelo prefere ol sur la linio nivelo. Estas
--word-diff opcion havebla en Git, ke vi povas postglui al la git log -p komando akiri vorto malsamoj anstataŭ normala linio por linio malsamoj.
Vorto malsamoj formato estas sufiĉe senutila kiam aplikita al
fontkodon, sed venas en oportuna kiam aplikita al grandaj arkivoj de
teksto, kiel libroj aŭ via disertacio. Jen ekzemplo: $ git log -U1 --word-diff commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -7,3 +7,3 @@ spec = Gem::Specification.new do |s| s.name = "simplegit" s.version = [-"0.1.0"-]{+"0.1.1"+} s.author = "Scott Chacon"
Kiel vi povas vidi, ke estas neniu aldonita kaj forigita linioj en tiu eligo kiel en normala malsamoj. Ŝanĝoj estas inline anstataŭe. Vi povas vidi la aldonita vorto enfermita en {+ +} kaj forigis unu enfermita en [- -] .
Vi povas ankaŭ volas redukti la kutimajn tri linioj kuntekston malsamoj
eligo al nur unu linion, kiel la kunteksto estas nun vortoj, ne linioj. Vi povas fari tion kun -U1 kiel ni faris en la ekzemplo supre. Vi povas ankaŭ uzi serion de resumanta ebloj kun
git log . Ekzemple, se vi volas vidi iom mallongigita statistikojn por ĉiu faras, vi povas uzi la --stat eblo: $ git log --stat commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon <schacon@gee-mail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number Rakefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code lib/simplegit.rb | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon <schacon@gee-mail.com> Date: Sat Mar 15 10:31:28 2008 -0700 first commit README | 6 ++++++ Rakefile | 23 +++++++++++++++++++++++ lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 0 deletions(-)
Kiel vi povas vidi, la --stat
opcion presaĵoj sub ĉiu faras eniro listo de modifita dosierojn, kiom
da dosieroj estis ŝanĝita, kaj kiom da linioj en tiuj dosieroj estis
aldonitaj kaj forigitaj. Ĝi ankaŭ metas resumon de la informoj ĉe la fino. Alia vere utila eblo estas --pretty . Tiu opcio ŝanĝas la logo eligo formatoj aliaj ol defaŭltajn. Kelkaj prebuilt ebloj estas disponebla por vi uzi. La oneline opcion presaĵoj ĉiu faras sur ununura linio, kiu estas utila se vi rigardas multajn interna. Krome, la short , full , kaj fuller ebloj montras la eligo en malglate la sama formato, sed kun malpli aŭ pli da informoj, respektive: $ git log --pretty=oneline ca82a6dff817ec66f44342007202690a93763949 changed the version number 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test code a11bef06a3f659402fe7563abf99ad00de2209e6 first commit
La plej interesa eblo estas format , kiu permesas vin specifi vian propran log eligo formato.
Tio estas aparte utila kiam vi generante eligo por maŝino analiza - ĉar
vi specifas la formaton eksplicite, vi scias ke tio ne ŝanĝas kun
ĝisdatigoj al Git: $ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 11 months ago : changed the version number 085bb3b - Scott Chacon, 11 months ago : removed unnecessary test code a11bef0 - Scott Chacon, 11 months ago : first commit
Tabelo 2-1 listigas iujn de la pli utilaj ebloj kiujn formato prenas. | eblo | Priskribo de Eligo |
|---|---|
%H | Transdonu hash |
%h | Mallongigita fari hash |
%T | arbo hash |
%t | Mallongigita arbo hash |
%P | gepatro hashes |
%p | Mallongigita gepatro hashes |
%an | aŭtora nomo |
%ae | Aŭtoro retpoŝto |
%ad | Aŭtoro dato (formato respektas la --date = opcio) |
%ar | Aŭtoro dato, parenco |
%cn | Committer nomon |
%ce | Committer retpoŝto |
%cd | Committer daton |
%cr | Committer dato, parenco |
%s | subjekto |
La
oneline kaj format ebloj estas aparte utila kun alia log eblon nomita --graph .
Tiu opcio aldonas belan ASCII grafeo montranta vian branĉo kaj kunfandi
historio, kiun ni povas vidi en nia ekzemplero de la Grit projekto
deponejo: $ git log --pretty=format:"%h %s" --graph * 2d3acf9 ignore errors from SIGCHLD on trap * 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit |\ | * 420eac9 Added a method for getting the current branch. * | 30e367c timeout code and tests * | 5a09431 add timeout protection to grit * | e1193f8 support for heads with slashes in them |/ * d6016bc require time for xmlschema * 11d191e Merge branch 'defunkt' into local
Tiuj estas nur kelkaj simplaj eligo-formataj opcioj al git log - estas multaj pli.
Tabelo 2-2 listigas la ebloj ni kovrita ĝis nun kaj iuj aliaj komunaj
formatado ebloj kiuj povas esti utilaj, kune kun kiel ili ŝanĝas la
eligo de la log komando. | eblo | priskribo |
|---|---|
-p | Montri la diakilo enkondukita kun ĉiu faras. |
--word-diff | Montri la diakilo en vorto malsamoj formato. |
--stat | Montri statistikon por dosieroj modifita en ĉiu faras. |
--shortstat | Aperigi nur la ŝanĝita / inserciones / forigoj linio de la --stat komando. |
--name-only | Montri la liston de dosieroj modifita post la commit informo. |
--name-status | Montri la liston de dosieroj tuŝita kun aldonita / redaktita / forigita informo tiel. |
--abbrev-commit | Montri nur la unuajn signojn de la SHA-1 checksum anstataŭ ĉiuj 40. |
--relative-date | Montri la daton en relativa formato (ekzemple, "2 semajnoj") anstataŭ uzi la plenan daton formaton. |
--graph | Montri ASCII grafikaĵo de la branĉo kaj kunfandi historio apud la log eligo. |
--pretty | Montri kompromitas en alternativa formato. Ebloj inkludas oneline, mallonga, plena, plena kaj formato (kie vi specifas vian propran formaton). |
--oneline | A oportuneco opcion mallongigo --pretty=oneline --abbrev-commit . |
Limiganta Ensalutu Eligo
Krom eligo-formataj opcioj,git log prenas kelkajn utilajn limiganta ebloj - te ebloj kiuj permesas vin montri nur subaro de interna. Vi vidis unu tia eblo jam - la -2 eblo, kiu montras nur la lastajn du interna. Fakte, vi povas fari -<n> , kie n estas ajna entjero montri la lastan n kompromitas.
En realo, vi estas neverŝajna uzi ke ofte, ĉar Git defaŭlte pipoj ĉiuj
eligo tra pager do komprenu nur unu paĝon el ŝtipo eligo samtempe. Tamen, la tempo-limiganta eblojn kiel
--since kaj --until estas tre utila. Ekzemple, tiu komando ricevas la lerta de interna faris en la lastaj du semajnoj: $ git log --since=2.weeks
Tiu komando laboras kun multaj formatoj - vi povas specifi specifa dato
( "2008-01-15") aŭ parenco daton kiel "2 jaroj 1 tago 3 minutoj". Vi povas ankaŭ filtri la liston al interna kiuj kongruas iuj serĉo kriterioj. La
--author opcio permesas filtri iun specifan aŭtoro kaj la --grep opcio ebligas serĉi ŝlosilvortoj en la commit mesaĝojn. (Notu, ke se vi volas specifi ambaŭ aŭtoro kaj grep ebloj, vi devas aldoni --all-match aŭ la komando kongruas kompromitas kun ĉu.) La lasta vere utila eblo por pasi al
git log kiel filtrilo estas vojo. Se vi specifas dosierujo aŭ dosiernomo, vi povas limigi la log eligo al interna kiu enkondukis ŝanĝon al tiuj dosieroj. Tio estas ĉiam la lasta elekto kaj estas ĝenerale antaŭita per duoblaj streketoj ( -- ) por apartigi la vojoj de la ebloj. En Tabelo 2-3 ni listo tiuj kaj kelkaj aliaj komunaj ebloj por via referenco.
| eblo | priskribo |
|---|---|
-(n) | Montri nur la lasta n kompromitas |
--since, --after | Limigi la interna al tiuj faritaj post la specifa dato. |
--until, --before | Limigi la interna al tiuj faritaj antaŭ la specifa dato. |
--author | Nur spektaklo faras en kiu la aŭtoro eniro matĉojn specifata cxeno. |
--committer | Nur spektaklo faras en kiu la committer eniro matĉojn specifata cxeno. |
$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \ --before="2008-11-01" --no-merges -- t/ 5610e3b - Fix testcase failure when extended attribute acd3b9e - Enhance hold_lock_file_for_{update,append}() f563754 - demonstrate breakage of detached checkout wi d1a43f2 - reset --hard/read-tree --reset -u: remove un 51a94af - Fix "checkout --track -b newbranch" on detac b0ad11e - pull: allow "git pull origin $something:$cur
De la preskaŭ 20.000 interna en la Git fontkodo historio, tiu komando montras la 6 ke kongruas tiujn kriteriojn. Uzante GUI visualizar Historio
Se vi ŝatus uzi pli grafika ilo por visualizar vian commit historio, vi eble volas preni rigardon ĉe Tcl / Tk programo nomitagitk kiu distribuas kun Git. Gitk estas esence vidaj git log ilo, kaj ĝi akceptas preskaŭ ĉiuj filtrado opcioj kiujn git log faras. Se vi tajpas gitk la komandlinio en via projekto, vi devus vidi ion kiel Figuro 2-2. 
Figuro 2-2. La gitk historio visualizador. Vi povas vidi la commit historio en la supra duono de la fenestro apud belan ascendencia grafeo. La malsamoj spektanton en la malsupera duono de la fenestro montras la ŝanĝoj enkondukitaj en ajna commit vi klakas.
Nenhum comentário:
Postar um comentário