CLI referencia
A Pitmaster egy CLI felületet tartalmaz, amely a git-parancsok egy részhalmazát tükrözi. Az aktuális munkakönyvtár tárolóján működik.
./vendor/bin/pitmaster <command> [args...]
Composer telepítés esetén a szkript helye: ./vendor/bin/pitmaster; 0.2.11 óta ott találja meg a projekt autoloaderét. A Pitmaster tároló saját checkoutjában futtassa a ./bin/pitmaster parancsot a composer install után. Az alábbi példákban mindkét útvonalon a pitmaster szerepel. Argumentumok nélkül futtatva kiírja a parancslistát.
A revíziók feloldása a Repository::resolve() működését követi: HEAD, ág- és címkenevek, teljes hivatkozásnevek, teljes hashek, valamint ~N / ^N kifejezések. Rövidített hashek nem fogadhatók el. A klónozás, lekérés és feltöltés csak a PHP API felületen keresztül érhető el.
Parancsok
log
Véglegesítési előzmények megjelenítése, a legújabbal kezdve.
# 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
A git limitmegadási formái (-n N, -nN, --max-count N, --max-count=N, -N) a 0.2.11 verzióban jelentek meg. A puszta szám a Pitmaster saját rövidítése a limit megadására. Az első további argumentum útvonalszűrő; az -- utáni összes argumentumot útvonalnak tekinti. Minden más, - karakterrel kezdődő argumentum kiírja a fatal: unrecognized argument: <arg> értéket, és 128 kóddal lép ki.
A kimenet tartalmazza a commit <hash> értéket (sárga), a merge-véglegesítések Merge: sorát, a nyers azonosítót (név, e-mail-cím, időbélyeg és időzóna) tartalmazó Author: értéket, valamint behúzva a véglegesítés üzenetét. A --oneline kiírja a abc1234 Subject értéket. Az útvonalszűrő egyetlen pontos fájlútvonalra illeszkedik, és csak a limit ötszörösének megfelelő legújabb véglegesítést vizsgálja (#7).
show
Véglegesítés részleteinek és az első szülőhöz viszonyított diffjének megjelenítése.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
A véglegesítés metaadatai (egy Date: sorral), majd egy egységes diff jelenik meg. Annotált címke esetén először a címke fejléce és üzenete jelenik meg. Színeket csak akkor használ, ha a stdout terminál. A merge-véglegesítések diff nélkül jelennek meg.
cat-file
Egy git objektum nyers tartalmának kiírása.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Teljes hash szükséges. Kiírja az objektum tárolt tartalmát: a blobok, véglegesítések és címkék szövegként, a fák bináris formában jelennek meg. A git cat-file -p paranccsal ellentétben a fákat nem formázza olvashatóvá.
status
A munkafa állapotának megjelenítése.
pitmaster status
pitmaster status --porcelain=v2
Kimenet:
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
A stage-elt fájlok zölden, a nem stage-elt, feloldatlan és nem követett fájlok pirossal jelennek meg. Konfliktusos merge esetén megjelenik egy Unmerged paths: szakasz. Leválasztott HEAD esetén a HEAD detached jelenik meg, tiszta fa esetén pedig a nothing to commit, working tree clean. A --porcelain=v2 az Repository::statusPorcelainV2() kimenetét írja ki.
diff
Az index és a munkafa közötti változások megjelenítése (nem stage-elt módosítások).
# 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
A kimenet színezett, egységes diff, akkor is, ha a stdout nem terminál. Módosított szövegfájloknál a git diff formátumot használja; az új, törölt, bináris, átnevezett és módmódosított fájlok formázása eltér (lásd: Diff). Az első véglegesítés előtt a diff --cached nem ír ki semmit (#5).
add
Fájlok stage-elése a következő véglegesítéshez.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Minden fájlt beolvas a munkafából, blob objektumként írja ki, majd frissíti az indexet. Az argumentumok fájlútvonalak; a könyvtárak és a . nem kerülnek kibontásra.
commit
Véglegesítés létrehozása a stage-elt fájlokból.
pitmaster commit -m "Add new feature"
Kimenet:
[main abc1234] Add new feature
A -m megadása kötelező, kivéve egy megállt merge, cherry-pick, revert vagy rebase befejezésekor, amikor az előkészített üzenetet használja. A szerző és a véglegesítő adatait a környezeti változókból, konstansokból és a .git/config értékből oldja fel a Kezdő lépések részben leírtak szerint.
branch
Ágak listázása vagy új ág létrehozása.
# 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
Listázás kimenete:
bugfix/typo
feature/login
* main
Létrehozáskor Created branch <name>, törléskor Deleted branch <name> jelenik meg. A -d és -D azonosan működnek: egyik sem ellenőrzi, hogy az ág beolvadt-e, és mindkettő megtagadja a jelenleg checkoutolt ág törlését.
tag
Címkék listázása vagy új címke létrehozása.
# 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"
Létrehozáskor Created tag <name> jelenik meg.
checkout
Ágak közötti váltás vagy a HEAD leválasztása.
# Switch to a branch
pitmaster checkout feature/login
# Detach HEAD at a tag or commit
pitmaster checkout v1.0.0
pitmaster checkout HEAD~2
Frissíti a HEAD-et, az indexet és a munkafát, hogy azok megfeleljenek a célnak, majd kiírja a Switched to '<target>' értéket. Megtagadja a műveletet, ha a két fában eltérő útvonalakon helyi módosítások vagy nem követett fájlok vannak. A többi követett fájl nem véglegesített módosításai felülíródnak a cél tartalmával, miközben a git megtartaná őket (#2); előbb véglegesítse vagy tegye félre ezeket.
merge
Egy vagy több ág beolvasztása az aktuális HEAD-be, vagy egy folyamatban lévő merge-konfliktus folytatása/megszakítása.
# 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
Sikeres művelet kimenete:
Merge successful.
Konfliktus esetén a kimenet (stderr, 1-es kilépési kód):
CONFLICT in: src/File.php, src/Other.php
A -s elfogadja a ours, ort és recursive értékeket; a ort és recursive egyaránt az alapértelmezett merge-et használja. A -s megadásakor a CLI kiírja a Merge successful. értéket, és 0-val lép ki akkor is, ha a merge konfliktus miatt állt meg (#21); ezért utána ellenőrizze a status értékét. Merge nélkül a merge --continue 128 kóddal lép ki. Egy már beolvadt ág merge-elése újabb merge-véglegesítést hoz létre (#6), a követett fájlok nem véglegesített módosításai pedig a checkout működéséhez hasonlóan felülíródnak.
cherry-pick
Véglegesítés alkalmazása az aktuális HEAD-re, vagy folyamatban lévő konfliktus folytatása/megszakítása.
# 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
Siker esetén nem ír ki semmit. Folyamatban lévő cherry-pick nélkül a --continue és a --abort 128 kóddal lép ki.
revert
Visszavonó véglegesítés létrehozása, vagy folyamatban lévő konfliktus folytatása/megszakítása.
# 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
Siker esetén nem ír ki semmit. Folyamatban lévő revert nélkül a --continue és a --abort 128 kóddal lép ki.
rebase
Az aktuális ág újraalapozása egy másik hivatkozásra.
# 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
Siker esetén nem ír ki semmit. Folyamatban lévő rebase nélkül a --continue, a --skip és a --abort kiírja a fatal: no rebase in progress értéket, majd 128 kóddal lép ki.
bisect
Bináris kereséssel annak a véglegesítésnek a megkeresése, amely bevezette a változást.
# 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
A start, a good és a bad kiírja a következő jelölt teljes hashét, amelyet checkoutol. Ha már csak egy gyanúsított marad, ugyanaz a hash jelenik meg ismét: ez az első hibás véglegesítés. A git-től eltérően nem jelenik meg az „is the first bad commit” összegzés.
stash
Munkakönyvtár-módosítások mentése és visszaállítása.
# 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
Az üzenet a push vagy save utáni argumentum; a -m nem támogatott, és üzenetként kerülne tárolásra. A pop, a apply és a drop mindig a stash@{0} értéket használja. Ezek a Saved working directory to stash abc1234, Applied and dropped stash, Applied stash és Dropped stash értékeket írják ki.
Stash-lista kimenete:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Ha egynél több bejegyzés van, a drop és a pop jelenleg a listában hagyja a bejegyzést (#10), a apply pedig felülírja azoknak a fájloknak a nem véglegesített módosításait, amelyekhez a stash nem nyúl (#11).
blame
Fájl sorainak szerzői adatainak megjelenítése a HEAD állapotában.
pitmaster blame src/Repository.php
Kimenet:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Minden sor a commit hash első 8 karakterét és a szerzőazonosító első 30 karakterét mutatja (Name <email> timestamp timezone), kitöltés nélkül.
grep
Fájlok tartalmának keresése az aktuális HEAD fában.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Kimenet:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Az opcióknak a minta előtt kell szerepelniük:
-i,--ignore-case: kis- és nagybetűkre nem érzékeny egyezés-E,--extended-regexp,--regex: a mintát PCRE reguláris kifejezésként kezeli
A kimenet egyszerű path:line:content, színek nélkül.
reflog
A reflogbejegyzések megjelenítése, a legújabbal kezdve.
# 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"
Az alapértelmezett formátum: %gd: %gs (HEAD@{0}: commit: Add feature). Támogatott helyőrzők: %gd és %gD (választó), %gs (üzenet), %H és %h (teljes és rövid új hash). A korlátok elfogadják a következőket: -n N, -nN és --max-count N; a -n 0 minden bejegyzést kiír.
A pitmaster init által létrehozott tárolók nem rögzítenek reflogot, kivéve, ha a .git/config fájlban a core.logallrefupdates értéke true (#8); ezért a reflog addig nem ír ki semmit, amíg ez nincs beállítva.
refs
Az összes ref felsorolása a hozzájuk tartozó hash értékkel.
pitmaster refs
Kimenet:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
A hash értékek teljes hosszukban jelennek meg.
reset
A HEAD visszaállítása egy adott commitra.
# 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
Meg kell adni egy revíziót. Kimenet:
HEAD is now at abc1234
init
Új tároló inicializálása. Ez az egyetlen parancs, amelyhez nem szükséges meglévő tároló.
# 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
Kimenet:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
A --object-format a következőket fogadja el: sha1 (alapértelmezett) és sha256.
Kilépési kódok
| Kód | Jelentés |
|---|---|
| 0 | Siker |
| 1 | Parancshiba: használati hiba, ismeretlen parancs, sikertelen művelet (error: <message>) vagy konfliktusok miatt leállt egyesítés |
| 128 | Nem git-tároló (fatal: <message>), fel nem ismert log argumentum, vagy művelet nélkül megadott --continue / --abort / --skip |