Zoeken…


Opmerkingen

Veel Git-opdrachten beschouwen revisieparameters als argumenten. Afhankelijk van het commando, geven ze een specifieke commit aan, of, voor commando's die de revisiegrafiek lopen (zoals git-log (1) ), alle commits die vanuit die commit kunnen worden bereikt. Ze worden meestal aangeduid als <commit> , of <rev> of <revision> in de syntaxisbeschrijving.

De referentiedocumentatie voor de syntaxis van Git revisies is de manpagina van gitrevisions (7) .

Nog steeds ontbreekt op deze pagina:

  • [_] Uitvoer van git describe , bijvoorbeeld v1.7.4.2-679-g3bee7fb
  • [_] @ alleen als snelkoppeling voor HEAD
  • [_] @{-<n>} , bijvoorbeeld @{-1} , en - betekenis @{-1}
  • [_] <branchname>@{push}
  • [_] <rev>^@ , voor alle ouders van <rev>

Heeft afzonderlijke documentatie nodig:

  • [_] Verwijzend naar blobs en bomen in de repository en in de index: <rev>:<path> en :<n>:<path> syntaxis
  • [_] A..B zoals A..B , A...B , B ^A , A^1 , en revisiebeperkingen zoals -<n> , - --since

Revisie opgeven op objectnaam

$ git show dae86e1950b1277e545cee180551750029cfe735
$ git show dae86e19

U kunt revisie (of in werkelijkheid elk object: tag, boom, dwz mapinhoud, blob, dwz bestandsinhoud) opgeven met behulp van de SHA-1-objectnaam, ofwel een volledige 40-byte hexadecimale tekenreeks, of een substring die uniek is voor de repository.

Symbolische ref-namen: filialen, tags, filialen op afstand

$ git log master    # specify branch
$ git show v1.0     # specify tag
$ git show HEAD     # specify current branch
$ git show origin   # specify default remote-tracking branch for remote 'origin'

U kunt een revisie opgeven met een symbolische ref-naam, inclusief vertakkingen (bijvoorbeeld 'master', 'next', 'maint'), tags (bijvoorbeeld 'v1.0', 'v0.6.3-rc2'), remote- filialen volgen (bijvoorbeeld 'origin', 'origin / master'), en speciale refs zoals 'HEAD' voor huidige branch.

Als de symbolische ref-naam dubbelzinnig is, bijvoorbeeld als u zowel branch als tag met de naam 'fix' heeft (vertakking en tag met dezelfde naam wordt niet aanbevolen), moet u het soort ref opgeven dat u wilt gebruiken:

$ git show heads/fix      # or 'refs/heads/fix', to specify branch
$ git show tags/fix       # or 'refs/tags/fix', to specify tag

De standaardrevisie: HEAD

$ git show         # equivalent to 'git show HEAD'

'HEAD' benoemt de commit waarop je de veranderingen in de werkende boom hebt gebaseerd, en is meestal de symbolische naam voor de huidige branch. Veel (maar niet alle) opdrachten die de revisieparameter als standaard hebben ingesteld op 'HEAD' als deze ontbreekt.

Reflog referenties: @ { }

$ git show @{1}            # uses reflog for current branch
$ git show master@{1}      # uses reflog for branch 'master'
$ git show HEAD@{1}        # uses 'HEAD' reflog

Een ref, meestal een branch of HEAD, gevolgd door het achtervoegsel @ met een ordinale specificatie ingesloten in een accoladepaar (bijvoorbeeld {1} , {15} ) geeft de n-de eerdere waarde van die ref in uw lokale repository aan . Je kunt recente reflog-items controleren met de opdracht git reflog of de optie --walk-reflogs / -g om git log --walk-reflogs .

$ git reflog
08bb350 HEAD@{0}: reset: moving to HEAD^
4ebf58d HEAD@{1}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{2}: pull: Fast-forward
f34be46 HEAD@{3}: checkout: moving from af40944bda352190f05d22b7cb8fe88beb17f3a7 to master
af40944 HEAD@{4}: checkout: moving from master to v2.6.3

$ git reflog gitweb-docs
4ebf58d gitweb-docs@{0}: branch: Created from master

Opmerking : het gebruik van reflogs verving praktisch het oudere mechanisme om ORIG_HEAD ref te gebruiken (ongeveer gelijk aan HEAD@{1} ).

Reflog referenties: @ { }

$ git show master@{yesterday}
$ git show HEAD@{5 minutes ago}   # or HEAD@{5.minutes.ago}

Een ref gevolgd door het achtervoegsel @ met een datumspecificatie ingesloten in een accoladepaar (bijvoorbeeld {yesterday} , {1 month 2 weeks 3 days 1 hour 1 second ago} of {1979-02-26 18:30:00} ) geeft aan de waarde van de ref op een eerder tijdstip (of het dichtstbijzijnde punt). Merk op dat hiermee de status van uw lokale referentie op een bepaald tijdstip wordt opgezocht; bijv. wat er vorige week in uw lokale 'master'- filiaal was.

Je kunt git reflog met een datum-specificatie om de exacte tijd op te zoeken waar je iets hebt gedaan om de ref in de lokale repository te geven.

$ git reflog HEAD@{now}
08bb350 HEAD@{Sat Jul 23 19:48:13 2016 +0200}: reset: moving to HEAD^
4ebf58d HEAD@{Sat Jul 23 19:39:20 2016 +0200}: commit: gitweb(1): Document query parameters
08bb350 HEAD@{Sat Jul 23 19:26:43 2016 +0200}: pull: Fast-forward

Bijgehouden / stroomopwaartse tak: @{stroomopwaarts}

$ git log @{upstream}..       # what was done locally and not yet published, current branch
$ git show master@{upstream}  # show upstream of branch 'master'

Het achtervoegsel @{upstream} toegevoegd aan een branchnaam (korte vorm <branchname>@{u} ) verwijst naar de branch waar de branch die is opgegeven door branchname is ingesteld om bovenop te bouwen (geconfigureerd met branch.<name>.remote en branch.<name>.merge , of met git branch --set-upstream-to=<branch> ). Een ontbrekend branchnaam is standaard ingesteld op het huidige.

Samen met de syntaxis voor revisiebereiken is het erg handig om de commits te zien die uw branch stroomopwaarts voorloopt (commits in uw lokale repository die nog niet stroomopwaarts aanwezig zijn), en wat commits u achterlaat (commits in upstream niet samengevoegd met lokale branch), of beide:

$ git log --oneline @{u}..
$ git log --oneline ..@{u}
$ git log --oneline --left-right @{u}...  # same as ...@{u}

Commit vooroudersketen: ^, ~ , enz.

$ git reset --hard HEAD^             # discard last commit
$ git rebase --interactive HEAD~5    # rebase last 4 commits

Een achtervoegsel ^ aan een revisieparameter betekent het eerste bovenliggende element van dat commit-object. ^<n> betekent de <n> -de ouder (dwz <rev>^ is gelijk aan <rev>^1 ).

Een achtervoegsel ~<n> voor een revisieparameter betekent het commit-object dat de voorouder van de <n> -generatie is van het genoemde commit-object, dat alleen de eerste ouders volgt. Dit betekent dat bijvoorbeeld <rev>~3 equivalent is aan <rev>^^^ . Om sneller <rev>~ behulp <rev>~1 en komt overeen met <rev>^1 , of <rev>^ kortom.

Deze syntaxis is configureerbaar.


Om dergelijke symbolische namen te vinden, kun je het git name-rev commando gebruiken:

$ git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940

Merk op dat --pretty=oneline en niet --oneline in het volgende voorbeeld moet worden gebruikt

$ git log --pretty=oneline | git name-rev --stdin --name-only
master Sixth batch of topics for 2.10
master~1 Merge branch 'ls/p4-tmp-refs'
master~2 Merge branch 'js/am-call-theirs-theirs-in-fallback-3way'
[...]
master~14^2 sideband.c: small optimization of strbuf usage
master~16^2 connect: read $GIT_SSH_COMMAND from config file
[...]
master~22^2~1 t7810-grep.sh: fix a whitespace inconsistency
master~22^2~2 t7810-grep.sh: fix duplicated test name

Takken en tags opnieuw bepalen: ^ 0, ^ { }

In sommige gevallen is het gedrag van een opdracht afhankelijk van of deze een filiaalnaam, tagnaam of een willekeurige revisie krijgt. U kunt de syntaxis "Verwijzing" gebruiken als u deze laatste nodig hebt.

Een achtervoegsel ^ gevolgd door een objecttypenaam ( tag , commit , tree , blob ) ingesloten in v0.99.8^{commit} (bijvoorbeeld v0.99.8^{commit} ) betekent recursief het object op <rev> recursief tot een object van het type <type> is gevonden of het object kan niet meer worden verwijderd. <rev>^0 is een short-hand voor <rev>^{commit} .

$ git checkout HEAD^0    # equivalent to 'git checkout --detach' in modern Git

Een achtervoegsel ^ gevolgd door een leeg v0.99.8^{} (bijvoorbeeld v0.99.8^{} ) betekent dat de tag recursief wordt v0.99.8^{} totdat een niet- v0.99.8^{} wordt gevonden.

Vergelijken

$ git show v1.0
$ git cat-file -p v1.0
$ git replace --edit v1.0

met

$ git show v1.0^{}
$ git cat-file -p v1.0^{}
$ git replace --edit v1.0^{}

Jongste overeenkomende commit: ^ {/ },: /

$ git show HEAD^{/fix nasty bug}   # find starting from HEAD
$ git show ':/fix nasty bug'       # find starting from any branch

Een dubbele punt (' : '), gevolgd door een schuine streep (' / '), gevolgd door een tekst, benoemt een commit waarvan het commit-bericht overeenkomt met de opgegeven reguliere expressie. Deze naam geeft de jongste overeenkomende commit terug die bereikbaar is vanaf elke ref. De reguliere expressie kan overeenkomen met elk deel van het commit-bericht. Om berichten te matchen die met een string beginnen, kan men bijvoorbeeld :/^foo . De speciale volgorde :/! is gereserveerd voor modificaties van wat overeenkomt. :/!-foo voert een negatieve match uit, terwijl :/!!foo letterlijk overeenkomt! karakter, gevolgd door foo .

Een achtervoegsel ^ voor een revisieparameter, gevolgd door een paar haakjes dat een tekst bevat die wordt geleid door een schuine streep, is hetzelfde als de :/<text> -syntaxis hieronder dat het de jongste overeenkomende commit retourneert die bereikbaar is via de <rev> ervoor ^ .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow