Referenca CLI
Pitmaster vključuje CLI, ki posnema podnabor ukazov git. Deluje z repozitorijem v trenutnem delovnem imeniku.
./vendor/bin/pitmaster <command> [args...]
Pri namestitvi Composer je skript na mestu ./vendor/bin/pitmaster; od 0.2.11 tam poišče nalagalnik projekta. V odjavi samega repozitorija Pitmaster poženite ./bin/pitmaster po composer install. Spodnji primeri za obe poti uporabljajo pitmaster. Če ga zaženete brez argumentov, izpiše seznam ukazov.
Revizije se razrešujejo kot pri Repository::resolve(): HEAD, imena vej in oznak, polna imena referenc, polne zgoščene vrednosti ter izrazi ~N / ^N. Skrajšane zgoščene vrednosti niso sprejete. Kloniranje, prenos sprememb in potiskanje so na voljo samo prek PHP API.
Ukazi
log
Prikaže zgodovino potrditvenih zapisov, od najnovejšega naprej.
# 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
Zapisi omejitve git (-n N, -nN, --max-count N, --max-count=N, -N) so bili dodani v 0.2.11. Golo število je lastna okrajšava Pitmaster za omejitev. Prvi drugi argument je filter poti; vse po -- se obravnava kot pot. Vsak drug argument, ki se začne z -, izpiše fatal: unrecognized argument: <arg> in konča z izhodno kodo 128.
Izhod vključuje commit <hash> (rumeno), vrstico Merge: za združitvene potrditvene zapise, Author: z neobdelano identiteto (ime, e-pošta, časovni žig in časovni pas) ter zamaknjeno sporočilo potrditvenega zapisa. --oneline izpiše abc1234 Subject. Filter poti se ujema z eno natančno potjo datoteke in pregleda samo zadnjih pet potrditvenih zapisov, določenih z omejitvijo (#7).
show
Prikaže podrobnosti potrditvenega zapisa in razliko glede na prvega prednika.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
Prikaže metapodatke potrditvenega zapisa (z vrstico Date:), nato pa poenoteno razliko. Pri označeni oznaki sta najprej glava oznake in sporočilo. Barve so uporabljene samo, kadar je standardni izhod terminal. Združitveni potrditveni zapisi so prikazani brez razlike.
cat-file
Izpiše neobdelano vsebino objekta git.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Sprejme polno zgoščeno vrednost. Izpiše shranjeno vsebino objekta: blobe, potrditvene zapise in oznake kot besedilo, drevesa pa v binarni obliki. Za razliko od git cat-file -p dreves ne izpiše v berljivi obliki.
status
Prikaže stanje delovnega drevesa.
pitmaster status
pitmaster status --porcelain=v2
Izhod:
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
Datoteke v pripravi so prikazane zeleno, nepripravljene, nerazrešene in nesledene pa rdeče. Med združitvijo s spori se prikaže razdelek Unmerged paths:. Pri odklopljenem HEAD izpiše HEAD detached, pri čistem drevesu pa nothing to commit, working tree clean. --porcelain=v2 izpiše rezultat ukaza Repository::statusPorcelainV2().
diff
Prikaže spremembe med indeksom in delovnim drevesom (nepripravljene spremembe).
# 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
Izhod je obarvana poenotena razlika, tudi kadar standardni izhod ni terminal. Za spremenjene besedilne datoteke se ujema z git diff; nove, izbrisane, binarne, preimenovane datoteke in datoteke s spremenjenim načinom so oblikovane drugače (glejte Razlika). diff --cached pred prvim potrditvenim zapisom ne izpiše ničesar (#5).
add
Pripravi datoteke za naslednji potrditveni zapis.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Vsaka datoteka se prebere iz delovnega drevesa, zapiše kot objekt blob, nato pa se posodobi indeks. Argumenti so poti datotek; imeniki in . se ne razširijo.
commit
Ustvari potrditveni zapis iz pripravljenih datotek.
pitmaster commit -m "Add new feature"
Izhod:
[main abc1234] Add new feature
-m je obvezen, razen pri dokončanju ustavljene združitve, izbire potrditvenega zapisa, povrnitve ali ponovne osnovitve, ko se uporabi pripravljeno sporočilo. Avtor in potrjevalec se določita iz spremenljivk okolja, konstant in .git/config, kot je opisano v razdelku Uvod.
branch
Izpiše veje ali ustvari novo vejo.
# 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
Izhod pri izpisu:
bugfix/typo
feature/login
* main
Ustvarjanje izpiše Created branch <name>, brisanje pa Deleted branch <name>. -d in -D delujeta enako: nobeden ne preveri, ali je veja združena, oba pa zavrneta izbris trenutno odjavljene veje.
tag
Izpiše oznake ali ustvari novo oznako.
# 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"
Ustvarjanje izpiše Created tag <name>.
checkout
Preklopi veje ali odklopi 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
Posodobi HEAD, indeks in delovno drevo, da ustrezajo cilju, ter izpiše Switched to '<target>'. Zavrne izvedbo, če so lokalne spremembe ali nesledene datoteke na poteh, ki se razlikujejo med obema drevesoma. Nepotrjene spremembe v drugih sledenih datotekah prepiše z vsebino cilja; git bi jih ohranil (#2). Najprej jih potrdite ali shranite v začasno shrambo.
merge
Združi eno ali več vej v trenutni HEAD ali nadaljuje oziroma prekine združevanje obstoječega spora.
# 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
Izhod ob uspehu:
Merge successful.
Izhod ob sporu (na stderr, izhodna koda 1):
CONFLICT in: src/File.php, src/Other.php
-s sprejema ours, ort in recursive; ort in recursive uporabljata privzeto združitev. Z -s CLI izpiše Merge successful. in konča z izhodno kodo 0 tudi, ko se združevanje ustavi zaradi sporov (#21), zato nato preverite status. merge --continue brez potekajoče združitve konča z izhodno kodo 128. Združitev že združene veje ustvari še en združitveni potrditveni zapis (#6), nepotrjene spremembe v sledenih datotekah pa se prepišejo enako kot pri checkout.
cherry-pick
Uveljavi potrditveni zapis na trenutnem HEAD ali nadaljuje oziroma prekine potekajoči spor.
# 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
Ob uspehu ne izpiše ničesar. --continue in --abort brez potekajoče izbire potrditvenega zapisa končata z izhodno kodo 128.
revert
Ustvari povrnitveni potrditveni zapis ali nadaljuje oziroma prekine potekajoči spor.
# 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
Ob uspehu ne izpiše ničesar. --continue in --abort brez potekajoče povrnitve končata z izhodno kodo 128.
rebase
Ponovno osnovi trenutno vejo na drugi referenci.
# 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
Ob uspehu ne izpiše ničesar. --continue, --skip in --abort brez potekajoče ponovne osnovitve izpišejo fatal: no rebase in progress in končajo z izhodno kodo 128.
bisect
Z binarnim iskanjem poišče potrditveni zapis, ki je uvedel spremembo.
# 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 in bad izpišejo polno zgoščeno vrednost naslednje kandidatke, ki je odjavljena. Ko ostane samo en sumljivi potrditveni zapis, se ista zgoščena vrednost izpiše znova: ta potrditveni zapis je prvi slab. Za razliko od git se povzetek »is the first bad commit« ne izpiše.
stash
Shrani in obnovi spremembe delovnega imenika.
# 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
Sporočilo je argument za push ali save; -m ni podprt in bi bil shranjen kot sporočilo. pop, apply in drop vedno uporabljajo stash@{0}. Izpišejo Saved working directory to stash abc1234, Applied and dropped stash, Applied stash in Dropped stash.
Izhod seznama začasno shranjenih sprememb:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Če je več kot en vnos, drop in pop trenutno pustita vnos na seznamu (#10), apply pa prepiše nepotrjene spremembe v datotekah, ki se jih začasna shramba ne dotika (#11).
blame
Prikaže avtorstvo posameznih vrstic datoteke v HEAD.
pitmaster blame src/Repository.php
Izhod:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Vsaka vrstica prikazuje prvih 8 znakov zgoščene vrednosti potrditvenega zapisa in prvih 30 znakov identitete avtorja (Name <email> timestamp timezone), brez dopolnjevanja.
grep
Išče po vsebini datotek v drevesu trenutnega HEAD.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Izhod:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Možnosti morajo biti navedene pred vzorcem:
-i,--ignore-case: ne razlikuje med velikimi in malimi črkami-E,--extended-regexp,--regex: vzorec obravnava kot regularni izraz PCRE
Izhod je navadno besedilo path:line:content brez barv.
reflog
Prikaže vnose Reflog, od najnovejšega naprej.
# 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"
Privzeta oblika je %gd: %gs (HEAD@{0}: commit: Add feature). Podprti nadomestni nizi: %gd in %gD (izbirnik), %gs (sporočilo), %H in %h (polna in kratka nova zgoščena vrednost). Omejitve sprejemajo -n N, -nN in --max-count N; -n 0 izpiše vse vnose.
Repozitoriji, ki jih ustvari pitmaster init, ne beležijo dnevnikov Reflog, razen če je v .git/config core.logallrefupdates nastavljeno na true (#8); zato reflog tam ne izpiše ničesar, dokler to ni nastavljeno.
refs
Izpiše vse reference z njihovimi zgoščenimi vrednostmi.
pitmaster refs
Izhod:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Zgoščene vrednosti se izpišejo v celoti.
reset
Ponastavi HEAD na določen potrditveni zapis.
# 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
Obvezna je revizija. Izhod:
HEAD is now at abc1234
init
Inicializira nov repozitorij. To je edini ukaz, za katerega ne potrebujete obstoječega repozitorija.
# 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
Izhod:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
--object-format sprejema sha1 (privzeto) in sha256.
Izhodne kode
| Koda | Pomen |
|---|---|
| 0 | Uspešno |
| 1 | Napaka ukaza: napačna uporaba, neznan ukaz, neuspešna operacija (error: <message>) ali združitev, ustavljena zaradi sporov |
| 128 | Repozitorij ni git (fatal: <message>), neprepoznan argument log ali --continue / --abort / --skip brez potekajoče operacije |