Siirry sisältöön

CLI-viite

Pitmaster sisältää CLI, joka jäljittelee osaa git-komennoista. Se toimii nykyisen työhakemiston tietovarastossa.

Shell
./vendor/bin/pitmaster <command> [args...]

Composer-asennuksessa komentosarja sijaitsee kohteessa ./vendor/bin/pitmaster; versiosta 0.2.11 alkaen se löytää projektin autoloaderin sieltä. Kun olet Pitmaster-tietovaraston työkopiossa, suorita ./bin/pitmaster komennon composer install jälkeen. Alla olevissa esimerkeissä käytetään arvoa pitmaster kummallekin polulle. Ilman argumentteja suorittaminen tulostaa komentoluettelon.

Versiot ratkaistaan kuten komennossa Repository::resolve(): HEAD, haarojen ja tunnisteiden nimet, täydet viitenimet, täydet tiivisteet sekä lausekkeet ~N / ^N. Lyhennettyjä tiivisteitä ei hyväksytä. Kloonaus, nouto ja lähetys ovat käytettävissä vain PHP API -rajapinnan kautta.

Komennot

log

Näyttää sitoumushistorian uusimmasta alkaen.

Shell
# Default: last 10 commits
pitmaster log

# Limit the number of commits
pitmaster log 25
pitmaster log -n 3
pitmaster log -n3
pitmaster log --max-count 3
pitmaster log --max-count=3
pitmaster log -3

# Commits that touch one file
pitmaster log src/Repository.php
pitmaster log -- src/Repository.php

# Commits reachable from all refs, and one line per commit
pitmaster log --all
pitmaster log --oneline

gitin rajoitusmuodot (-n N, -nN, --max-count N, --max-count=N, -N) lisättiin versiossa 0.2.11. Pelkkä numero on Pitmaster-komennon oma lyhennys rajoitukselle. Ensimmäinen muu argumentti suodattaa polun perusteella; kaikki kohdan -- jälkeinen käsitellään polkuna. Mikä tahansa muu argumentti, joka alkaa merkkijonolla -, tulostaa fatal: unrecognized argument: <arg> ja päättää suorituksen koodilla 128.

Tuloste sisältää arvon commit <hash> (keltainen), yhdistämissitoumuksille Merge:-rivin, arvon Author: sekä raakamuotoisen tunnisteen (nimi, sähköposti, aikaleima ja aikavyöhyke) ja sisennetyn sitoumusviestin. --oneline tulostaa arvon abc1234 Subject. Polkurajaus vastaa täsmälleen yhtä tiedostopolkua ja tutkii vain rajoituksen viisinkertaisen määrän uusimpia sitoumuksia (#7).

show

Näyttää sitoumuksen tiedot ja erot ensimmäiseen vanhempaan.

Shell
# Show HEAD
pitmaster show

# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f

Näyttää sitoumuksen metatiedot (mukana Date:-rivi) ja sen jälkeen yhtenäisen diff-näkymän. Selittävän tunnisteen kohdalla ensin näytetään tunnisteen otsake ja viesti. Värejä käytetään vain, kun vakiotuloste on pääte. Yhdistämissitoumukset näytetään ilman diffiä.

cat-file

Tulostaa git-objektin raakasisällön.

Shell
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2

Ottaa vastaan täyden tiivisteen. Tulostaa objektin tallennetun sisällön: blobit, commitit ja tagit tekstinä, puut binäärimuodossa. Toisin kuin git cat-file -p, puita ei tulosteta siististi muotoiltuina.

status

Näytä työpuun tila.

Shell
pitmaster status
pitmaster status --porcelain=v2

Tuloste:

Koodi
On branch main

Changes to be committed:
	new file:   src/Feature.php

Changes not staged for commit:
	modified:   src/Existing.php

Untracked files:
	notes.txt

Indeksiin lisätyt tiedostot näytetään vihreinä, indeksiin lisäämättömät, yhdistämättömät ja seuraamattomat punaisina. Ristiriitaisen yhdistämisen aikana näytetään Unmerged paths:-osio. Irrotettu HEAD tulostaa HEAD detached, ja puhdas puu tulostaa nothing to commit, working tree clean. --porcelain=v2 tulostaa komennon Repository::statusPorcelainV2() tulosteen.

diff

Näytä indeksin ja työpuun väliset muutokset (indeksiin lisäämättömät muutokset).

Shell
# Unstaged changes
pitmaster diff

# Staged changes (index vs HEAD)
pitmaster diff --cached
pitmaster diff --staged

# Choose the algorithm
pitmaster diff --patience
pitmaster diff --histogram
pitmaster diff --minimal

Tuloste on väritetty yhdistetty diff myös silloin, kun stdout ei ole pääte. Muokattujen tekstitiedostojen tuloste vastaa komentoa git diff; uudet, poistetut, binaariset, uudelleennimetyt ja käyttöoikeuksiltaan muuttuneet tiedostot muotoillaan eri tavoin (katso Diff). diff --cached ei tulosta mitään ennen ensimmäistä committia (#5).

add

Lisää tiedostot indeksiin seuraavaa committia varten.

Shell
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md

Jokainen tiedosto luetaan työpuusta, kirjoitetaan blob-objektiksi ja indeksi päivitetään. Argumentit ovat tiedostopolkuja; hakemistoja ja .-polkuja ei laajenneta.

commit

Luo commit indeksiin lisätyistä tiedostoista.

Shell
pitmaster commit -m "Add new feature"

Tuloste:

Koodi
[main abc1234] Add new feature

-m on pakollinen, paitsi keskeytyneen yhdistämisen, cherry-pick-toiminnon, palautuksen tai rebasen jatkamisessa, jolloin käytetään valmiiksi laadittua viestiä. Tekijä ja committaaja selvitetään ympäristömuuttujista, vakioista ja .git/config-arvosta, kuten Aloitus-osiossa kuvataan.

branch

Luettele haarat tai luo uusi haara.

Shell
# List all branches (current marked with *)
pitmaster branch

# Create a new branch from HEAD
pitmaster branch feature/new-thing

# Delete a branch
pitmaster branch -d feature/old
pitmaster branch -D feature/old

Luettelotuloste:

Koodi
  bugfix/typo
  feature/login
* main

Luonti tulostaa Created branch <name>, poistaminen tulostaa Deleted branch <name>. -d ja -D toimivat samalla tavalla: kumpikaan ei tarkista, onko haara yhdistetty, ja molemmat kieltäytyvät poistamasta käytössä olevaa haaraa.

tag

Luettele tagit tai luo uusi tagi.

Shell
# List all tags
pitmaster tag

# Create a lightweight tag at HEAD
pitmaster tag v1.0.0

# Create an annotated tag at HEAD
pitmaster tag v2.0.0 -m "Release version 2.0.0"

Luonti tulostaa Created tag <name>.

checkout

Vaihda haaraa tai irrota HEAD.

Shell
# Switch to a branch
pitmaster checkout feature/login

# Detach HEAD at a tag or commit
pitmaster checkout v1.0.0
pitmaster checkout HEAD~2

Päivittää HEADin, indeksin ja työpuun vastaamaan kohdetta sekä tulostaa Switched to '<target>'. Komento kieltäytyy toimimasta, jos paikallisia muutoksia tai seuraamattomia tiedostoja on poluissa, jotka eroavat puiden välillä. Muissa seuratuissa tiedostoissa tekemäsi commitoimattomat muutokset korvataan kohteen sisällöllä siellä, missä git säilyttäisi ne (#2); commitoi tai siirrä ne ensin sivuun.

merge

Yhdistä yksi tai useampi haara nykyiseen HEADiin tai jatka/keskeytä käynnissä oleva ristiriitojen selvitys.

Shell
# Start a merge
pitmaster merge feature/login

# Merge with a strategy
pitmaster merge -s ours feature/login

# Octopus merge of several branches
pitmaster merge feature/a feature/b

# Continue after resolving conflicts
pitmaster add a.txt
pitmaster merge --continue

# Abort and restore the pre-merge state
pitmaster merge --abort

Tuloste onnistuttaessa:

Koodi
Merge successful.

Tuloste ristiriitatilanteessa (stderr, poistumiskoodi 1):

Koodi
CONFLICT in: src/File.php, src/Other.php

-s hyväksyy arvot ours, ort ja recursive; ort ja recursive käyttävät molemmat oletusyhdistämistä. Kun käytössä on -s, CLI tulostaa Merge successful. ja päättyy koodiin 0, vaikka yhdistäminen olisi pysähtynyt ristiriitoihin (#21), joten tarkista status sen jälkeen. Jos yhdistämistä ei ole käynnissä, merge --continue päättyy koodiin 128. Jo yhdistetyn haaran yhdistäminen luo uuden yhdistämiscommitin (#6), ja seurattujen tiedostojen commitoimattomat muutokset korvataan kuten komennolla checkout.

cherry-pick

Sovella commit nykyisen HEADin päälle tai jatka/keskeytä käynnissä oleva ristiriitojen selvitys.

Shell
# Start a cherry-pick
pitmaster cherry-pick feature~1

# Continue after resolving conflicts
pitmaster add a.txt
pitmaster cherry-pick --continue

# Abort and restore HEAD
pitmaster cherry-pick --abort

Onnistuminen ei tuota tulostetta. --continue ja --abort päättyvät koodiin 128, jos cherry-pick ei ole käynnissä.

revert

Luo kumoava commit tai jatka/keskeytä käynnissä oleva ristiriitojen selvitys.

Shell
# Start a revert
pitmaster revert HEAD~1

# Continue after resolving conflicts
pitmaster add a.txt
pitmaster revert --continue

# Abort and restore HEAD
pitmaster revert --abort

Onnistuminen ei tuota tulostetta. --continue ja --abort päättyvät koodiin 128, jos palautus ei ole käynnissä.

rebase

Siirrä nykyinen haara toisen viitteen päälle rebasella.

Shell
# Start a rebase
pitmaster rebase main

# Continue after resolving conflicts
pitmaster rebase --continue

# Skip the current commit
pitmaster rebase --skip

# Abort and restore the original branch tip
pitmaster rebase --abort

Onnistuminen ei tuota tulostetta. --continue, --skip ja --abort tulostavat fatal: no rebase in progress ja päättyvät koodiin 128, jos rebase ei ole käynnissä.

bisect

Etsi muutoksen tuonut commit binaarihaulla.

Shell
# Start with a bad and a good revision; checks out and prints the first candidate
pitmaster bisect start HEAD v1.0.0

# Mark the checked-out candidate (or a given revision)
pitmaster bisect good
pitmaster bisect bad
pitmaster bisect bad HEAD~3

# End the session and return to the starting branch
pitmaster bisect reset

start, good ja bad tulostavat seuraavan ehdokkaan täyden tiivisteen, ja ehdokas otetaan käyttöön. Kun jäljellä on vain yksi epäilty, sama tiiviste tulostetaan uudelleen: kyseessä on ensimmäinen virheellinen commit. Toisin kuin git, komento ei tulosta yhteenvetoa "on ensimmäinen virheellinen commit".

stash

Tallenna ja palauta työpuun muutokset.

Shell
# Save current changes (push)
pitmaster stash
pitmaster stash push
pitmaster stash push "Work in progress on login"
pitmaster stash save "Work in progress on login"

# Apply and remove the top stash entry
pitmaster stash pop

# Apply without removing
pitmaster stash apply

# List stash entries
pitmaster stash list

# Drop the top stash entry
pitmaster stash drop

Viesti annetaan argumenttina push- tai save-komennon jälkeen; -m ei ole tuettu, ja se tallentuisi viestiksi. pop, apply ja drop käyttävät aina arvoa stash@{0}. Ne tulostavat arvot Saved working directory to stash abc1234, Applied and dropped stash, Applied stash ja Dropped stash.

Stash-luettelon tuloste:

Koodi
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature

Kun merkintöjä on useampi kuin yksi, drop ja pop jättävät merkinnän toistaiseksi luetteloon (#10), ja apply korvaa commitoimattomat muutokset tiedostoissa, joihin stash ei vaikuta (#11).

blame

Näytä tiedoston rivikohtaiset tekijätiedot HEADissa.

Shell
pitmaster blame src/Repository.php

Tuloste:

Koodi
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);

Jokaisella rivillä näytetään commit-tiivisteen 8 ensimmäistä merkkiä ja tekijän tunnisteen 30 ensimmäistä merkkiä (Name <email> timestamp timezone) ilman täytemerkkejä.

grep

Etsi tiedostojen sisällöstä nykyisessä HEAD-puussa.

Shell
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"

Tuloste:

Koodi
src/Repository.php:2257:    public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23:    public static function merge(

Asetusten on oltava ennen hakumallia:

  • -i, --ignore-case: kirjainkoosta riippumaton haku
  • -E, --extended-regexp, --regex: käsittele hakumallia PCRE-säännöllisenä lausekkeena

Tuloste on raakaa path:line:content-muotoa ilman värejä.

reflog

Näytä reflog-merkinnät uusimmat ensin.

Shell
# HEAD reflog (default: 10 entries)
pitmaster reflog

# Another ref, a custom limit, and a format
pitmaster reflog show refs/heads/main
pitmaster reflog -n 5
pitmaster reflog --format="%h %gs"

Oletusmuoto on %gd: %gs (HEAD@{0}: commit: Add feature). Tuetut paikkamerkit: %gd ja %gD (valitsin), %gs (viesti), %H ja %h (uusi tiiviste kokonaan ja lyhyessä muodossa). Rajoitteina hyväksytään -n N, -nN ja --max-count N; -n 0 tulostaa kaikki merkinnät.

pitmaster init-komennolla luodut tietovarastot eivät tallenna reflogeja, ellei asetuksen core.logallrefupdates arvoksi määritetä true tiedostossa .git/config (#8). Siksi reflog ei tulosta siellä mitään, ennen kuin asetus on tehty.

refs

Luettele kaikki viitteet ja niiden tiivisteet.

Shell
pitmaster refs

Tuloste:

Koodi
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0

Tiivisteet tulostetaan kokonaisina.

reset

Palauta HEAD tiettyyn committiin.

Shell
# Mixed reset (HEAD + index, default)
pitmaster reset HEAD~1
pitmaster reset --mixed HEAD~1

# Soft reset (HEAD only)
pitmaster reset --soft HEAD~1

# Hard reset (HEAD + index + worktree)
pitmaster reset --hard HEAD~3

Versio on pakollinen. Tuloste:

Koodi
HEAD is now at abc1234

init

Alusta uusi tietovarasto. Tämä on ainoa komento, joka ei vaadi olemassa olevaa tietovarastoa.

Shell
# Initialize in the current directory
pitmaster init

# Initialize at a specific path
pitmaster init /path/to/new-project

# Create a SHA-256 repository
pitmaster init --object-format=sha256
pitmaster init /path/to/new-project --object-format=sha256

Tuloste:

Koodi
Initialized empty Pitmaster repository in /path/to/new-project/.git/

--object-format hyväksyy arvot sha1 (oletus) ja sha256.

Palautuskoodit

Koodi Merkitys
0 Onnistui
1 Komentovirhe: käyttövirhe, tuntematon komento, epäonnistunut toiminto (error: <message>) tai ristiriitoihin pysähtynyt yhdistäminen
128 Ei ole git-tietovarasto (fatal: <message>), tunnistamaton log-argumentti tai --continue / --abort / --skip ilman käynnissä olevaa toimintoa