CLI Reference
Pitmaster indeholder en CLI, der afspejler et udvalg af git-kommandoer. Den arbejder på repositoryet i den aktuelle arbejdsmappe.
./vendor/bin/pitmaster <command> [args...]
Ved en Composer-installation er scriptet ./vendor/bin/pitmaster; siden 0.2.11 finder det projektets autoloader dér. Kør ./bin/pitmaster efter composer install i en checkout af selve repositoryet Pitmaster. Eksemplerne nedenfor bruger pitmaster til begge stier. Hvis du kører det uden argumenter, vises kommandolisten.
Revisioner findes på samme måde som Repository::resolve(): HEAD, grene- og tagnavne, fulde ref-navne, fulde hasher samt udtrykkene ~N / ^N. Forkortede hasher accepteres ikke. Clone, fetch og push er kun tilgængelige via PHP API.
Kommandoer
log
Vis commithistorikken med de nyeste commits først.
# 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
git's stavemåder for grænser (-n N, -nN, --max-count N, --max-count=N, -N) blev tilføjet i 0.2.11. Et rent tal er Pitmasters egen kortform for grænsen. Det første øvrige argument er et stimfilter; alt efter -- behandles som stien. Ethvert andet argument, der begynder med -, viser fatal: unrecognized argument: <arg> og afslutter med 128.
Outputtet indeholder commit <hash> (gul), en Merge:-linje for merge-commits, Author: med den rå identitet (navn, e-mail, tidsstempel og tidszone) samt commitmeddelelsen med indrykning. --oneline viser abc1234 Subject. Stimfilteret matcher én nøjagtig filsti og undersøger kun de nyeste fem gange grænseværdien commits (#7).
show
Vis commitdetaljer og diff i forhold til den første overordnede commit.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
Viser commitmetadata (med en Date:-linje) efterfulgt af en samlet diff. For et annoteret tag vises tagheaderen og meddelelsen først. Farver bruges kun, når stdout er en terminal. Merge-commits vises uden diff.
cat-file
Udskriv det rå indhold af et git-objekt.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Kræver en fuld hash. Udskriver objektets lagrede indhold: blobs, commits og tags som tekst, træer i binært format. I modsætning til git cat-file -p vises træer ikke i læsevenligt format.
status
Vis arbejdstræets status.
pitmaster status
pitmaster status --porcelain=v2
Output:
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
Filer i staging vises med grønt, mens filer, der ikke er i staging, ikke-flettede og ikke-sporede filer vises med rødt. En Unmerged paths:-sektion vises under en konfliktbehæftet merge. En frigjort HEAD viser HEAD detached, og et rent træ viser nothing to commit, working tree clean. --porcelain=v2 viser outputtet fra Repository::statusPorcelainV2().
diff
Vis ændringer mellem indekset og arbejdstræet (ændringer, der ikke er sat i staging).
# 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
Outputtet er en farvelagt samlet diff, også når stdout ikke er en terminal. Det svarer til git diff for ændrede tekstfiler; nye, slettede, binære, omdøbte filer og filer med ændret tilstand formateres anderledes (se Diff). diff --cached viser intet før det første commit (#5).
add
Sæt filer i staging til næste commit.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Hver fil læses fra arbejdstræet, skrives som et blobobjekt, og indekset opdateres. Argumenterne er filstier; mapper og . udvides ikke.
commit
Opret et commit ud fra filerne i staging.
pitmaster commit -m "Add new feature"
Output:
[main abc1234] Add new feature
-m er påkrævet, undtagen når en stoppet merge, cherry-pick, revert eller rebase afsluttes; her bruges den forberedte meddelelse. Forfatter og committer findes ud fra miljøvariabler, konstanter og .git/config som beskrevet i Kom godt i gang.
branch
Vis grene, eller opret en ny.
# 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
Output ved visning af grene:
bugfix/typo
feature/login
* main
Oprettelse viser Created branch <name>, sletning viser Deleted branch <name>. -d og -D gør det samme: Ingen af dem kontrollerer, om grenen er flettet ind, og begge afviser at slette den gren, der er tjekket ud.
tag
Vis tags, eller opret et nyt.
# 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"
Oprettelse viser Created tag <name>.
checkout
Skift gren, eller frigør 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
Opdaterer HEAD, indekset og arbejdstræet, så de svarer til målet, og viser Switched to '<target>'. Afviser handlingen, hvis lokale ændringer eller ikke-sporede filer ligger på stier, der er forskellige mellem de to træer. Ikke-committede ændringer i andre sporede filer overskrives med måltræets indhold, hvor git ville bevare dem (#2); commit eller stash dem først.
merge
Flet en eller flere grene ind i den aktuelle HEAD, eller fortsæt/afbryd en igangværende konflikt i en merge.
# 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
Output ved succes:
Merge successful.
Output ved konflikt (på stderr, afslutningskode 1):
CONFLICT in: src/File.php, src/Other.php
-s accepterer ours, ort og recursive; ort og recursive bruger begge standardmergen. Med -s viser CLI Merge successful. og afslutter med 0, selv når mergingen er stoppet på grund af konflikter (#21), så kontrollér status bagefter. merge --continue uden en igangværende merge afslutter med 128. Fletning af en gren, der allerede er flettet ind, opretter endnu et merge-commit (#6), og ikke-committede ændringer i sporede filer overskrives som ved checkout.
cherry-pick
Anvend et commit oven på den aktuelle HEAD, eller fortsæt/afbryd en igangværende konflikt.
# 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
Viser intet ved succes. --continue og --abort afslutter med 128, hvis der ikke er en igangværende cherry-pick.
revert
Opret et revert-commit, eller fortsæt/afbryd en igangværende konflikt.
# 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
Viser intet ved succes. --continue og --abort afslutter med 128, hvis der ikke er en igangværende revert.
rebase
Rebase den aktuelle gren oven på en anden ref.
# 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
Viser intet ved succes. --continue, --skip og --abort viser fatal: no rebase in progress og afslutter med 128, hvis der ikke er en igangværende rebase.
bisect
Find det commit, der indførte en ændring, ved hjælp af binærsøgning.
# 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 og bad viser den fulde hash for den næste kandidat, som tjekkes ud. Når der kun er én mistænkt tilbage, vises den samme hash igen: Dette commit er det første dårlige commit. I modsætning til git vises der ikke en oversigt med "is the first bad commit".
stash
Gem og gendan ændringer i arbejdsbiblioteket.
# 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
Meddelelsen er argumentet efter push eller save; -m understøttes ikke og ville blive gemt som meddelelsen. pop, apply og drop bruger altid stash@{0}. De viser Saved working directory to stash abc1234, Applied and dropped stash, Applied stash og Dropped stash.
Output fra stash-listen:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Med mere end én post lader drop og pop i øjeblikket posten blive i listen (#10), og apply overskriver ikke-committede ændringer i filer, som stash ikke berører (#11).
blame
Vis, hvem der har skrevet hver linje i en fil ved HEAD.
pitmaster blame src/Repository.php
Output:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Hver linje viser de første 8 tegn af commit-hashen og de første 30 tegn af forfatteridentiteten (Name <email> timestamp timezone) uden udfyldning.
grep
Søg i filindhold i det aktuelle HEAD-træ.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Output:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Valgmuligheder skal stå før mønsteret:
-i,--ignore-case: match uden forskel på store og små bogstaver-E,--extended-regexp,--regex: behandl mønsteret som et regulært PCRE-udtryk
Output er ren path:line:content uden farver.
reflog
Vis reflog-poster med den nyeste først.
# 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"
Standardformatet er %gd: %gs (HEAD@{0}: commit: Add feature). Understøttede pladsholdere: %gd og %gD (vælger), %gs (meddelelse), %H og %h (ny hash i fuld og kort form). Grænser accepterer -n N, -nN og --max-count N; -n 0 udskriver alle poster.
Repositories oprettet af pitmaster init registrerer ikke reflogs, medmindre core.logallrefupdates er sat til true i .git/config (#8), så reflog ikke udskriver noget dér, før det er tilfældet.
refs
Vis alle refs med deres hasher.
pitmaster refs
Output:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Hasherne udskrives i fuld længde.
reset
Nulstil HEAD til en bestemt commit.
# 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
En revision er påkrævet. Output:
HEAD is now at abc1234
init
Initialiser et nyt repository. Dette er den eneste kommando, der ikke kræver et eksisterende repository.
# 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
Output:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
--object-format accepterer sha1 (standard) og sha256.
Afslutningskoder
| Kode | Betydning |
|---|---|
| 0 | Succes |
| 1 | Kommandofejl: brugsfejl, ukendt kommando, mislykket handling (error: <message>) eller en merge, der blev stoppet på grund af konflikter |
| 128 | Ikke et git-repository (fatal: <message>), et argument til log, der ikke genkendes, eller --continue / --abort / --skip uden en igangværende handling |