CLI-viite
Pitmaster sisältää CLI, joka jäljittelee osaa git-komennoista. Se toimii nykyisen työhakemiston tietovarastossa.
./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.
# 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.
# 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.
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.
pitmaster status
pitmaster status --porcelain=v2
Tuloste:
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).
# 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.
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.
pitmaster commit -m "Add new feature"
Tuloste:
[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.
# 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:
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.
# 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.
# 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.
# 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:
Merge successful.
Tuloste ristiriitatilanteessa (stderr, poistumiskoodi 1):
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.
# 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.
# 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.
# 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.
# 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.
# 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:
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.
pitmaster blame src/Repository.php
Tuloste:
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.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Tuloste:
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.
# 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.
pitmaster refs
Tuloste:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Tiivisteet tulostetaan kokonaisina.
reset
Palauta HEAD tiettyyn committiin.
# 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:
HEAD is now at abc1234
init
Alusta uusi tietovarasto. Tämä on ainoa komento, joka ei vaadi olemassa olevaa tietovarastoa.
# 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:
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 |