CLI žinynas
Pitmaster turi CLI, kuriame įgyvendinta dalis git komandų. Jis veikia su saugykla dabartiniame darbiniame kataloge.
./vendor/bin/pitmaster <command> [args...]
Įdiegus iš Composer, scenarijus yra ./vendor/bin/pitmaster; nuo 0.2.11 jis ten randa projekto autoloader. Jei dirbate su pačia Pitmaster saugykla, po composer install paleiskite ./bin/pitmaster. Toliau pateiktuose pavyzdžiuose abiem keliais žymimas pitmaster. Paleidus be argumentų, išspausdinamas komandų sąrašas.
Revizijos nustatomos kaip Repository::resolve(): HEAD, šakų ir žymų pavadinimai, pilni nuorodų pavadinimai, pilni maišai ir ~N / ^N išraiškos. Sutrumpinti maišai nepriimami. Klonuoti, gauti ir siųsti galima tik per PHP API.
Komandos
log
Rodyti commit istoriją, pradedant naujausia.
# 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 ribos žymėjimo variantai (-n N, -nN, --max-count N, --max-count=N, -N) buvo pridėti 0.2.11. Vien skaičius yra paties Pitmaster naudojamas sutrumpintas ribos žymėjimas. Pirmasis kitas argumentas yra kelio filtras; visa, kas nurodyta po --, laikoma keliu. Bet kuris kitas argumentas, prasidedantis -, išveda fatal: unrecognized argument: <arg> ir baigia darbą su kodu 128.
Išvestyje pateikiama commit <hash> (geltona), suliejimo commit eilutė Merge:, Author: su neapdorotais tapatybės duomenimis (vardu, el. paštu, laiko žyma ir laiko juosta) bei įtrauktas commit pranešimas. --oneline išspausdina abc1234 Subject. Kelio filtras atitinka vieną tikslų failo kelią ir tikrina penkis kartus limitą viršijančius naujausius commit (#7).
show
Rodyti commit informaciją ir skirtumą nuo pirmojo tėvinio commit.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
Rodomi commit metaduomenys (su Date: eilute), po jų pateikiamas suvienodintas pakeitimų sąrašas. Anotuotos žymos atveju pirmiausia pateikiama žymos antraštė ir pranešimas. Spalvos naudojamos tik tada, kai stdout yra terminalas. Suliejimo commit rodomi be pakeitimų sąrašo.
cat-file
Išveda neapdorotą git objekto turinį.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Reikalingas visas maišas. Išspausdinamas saugomas objekto turinys: blob, commit ir žymos pateikiamos kaip tekstas, medžiai – dvejetaine forma. Skirtingai nei git cat-file -p, medžiai nespausdinami gražiai suformatuoti.
status
Rodyti darbinės kopijos būseną.
pitmaster status
pitmaster status --porcelain=v2
Išvestis:
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
Į indeksą įtraukti failai rodomi žaliai, o neįrašyti, nesulieti ir nesekami – raudonai. Kilus suliejimo konfliktui, rodoma skiltis Unmerged paths:. Jei HEAD atjungtas, išspausdinama HEAD detached, o jei medis švarus – nothing to commit, working tree clean. --porcelain=v2 išspausdina Repository::statusPorcelainV2() rezultatą.
diff
Rodyti skirtumus tarp indekso ir darbinės kopijos (neįrašytus pakeitimus).
# 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
Išvedamas spalvotas suvienodintas pakeitimų sąrašas, net jei stdout nėra terminalas. Modifikuotiems tekstiniams failams jis atitinka git diff; nauji, ištrinti, dvejetainiai, pervadinti ir pakeisto režimo failai formatuojami kitaip (žr. Skirtumų palyginimas). diff --cached prieš pirmąjį commit nieko neišspausdina (#5).
add
Paruošti failus kitam commit.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Kiekvienas failas nuskaitomas iš darbinės kopijos, įrašomas kaip blob objektas, o indeksas atnaujinamas. Argumentai yra failų keliai; katalogai ir . neišskleidžiami.
commit
Sukurti commit iš į indeksą įtrauktų failų.
pitmaster commit -m "Add new feature"
Išvestis:
[main abc1234] Add new feature
Reikalingas -m, išskyrus atvejus, kai užbaigiamas sustabdytas suliejimas, išrinkimas, atkūrimas arba perkėlimas iš naujo – tuomet naudojamas paruoštas pranešimas. Autorius ir įrašantis asmuo nustatomi pagal aplinkos kintamuosius, konstantas ir .git/config, kaip aprašyta skiltyje Pradžia.
branch
Išvardyti šakas arba sukurti naują.
# 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
Išvestis išvardijant:
bugfix/typo
feature/login
* main
Kuriant išspausdinama Created branch <name>, trinant – Deleted branch <name>. -d ir -D veikia vienodai: netikrinama, ar šaka sulieta, ir abiem atvejais atsisakoma ištrinti išsiregistruotą šaką.
tag
Išvardyti žymas arba sukurti naują.
# 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"
Kuriant išspausdinama Created tag <name>.
checkout
Perjungti šakas arba atjungti 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
Atnaujinami HEAD, indeksas ir darbinė kopija, kad atitiktų tikslą, ir išspausdinama Switched to '<target>'. Operacija atsisakoma, jei vietiniai pakeitimai arba nesekami failai yra keliuose, kurie skiriasi abiejuose medžiuose. Neįrašyti pakeitimai kituose sekamuose failuose perrašomi tikslo turiniu, kai Git juos paliktų (#2); pirmiausia atlikite commit arba išsaugokite pakeitimus laikinai.
merge
Sulieti vieną ar daugiau šakų su dabartiniu HEAD arba tęsti ar nutraukti vykstantį suliejimą su konfliktais.
# 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
Išvestis sėkmės atveju:
Merge successful.
Išvestis konflikto atveju (stderr, išėjimo kodas 1):
CONFLICT in: src/File.php, src/Other.php
-s priima ours, ort ir recursive; tiek ort, tiek recursive naudoja numatytąjį suliejimą. Naudojant -s, CLI išspausdina Merge successful. ir baigia darbą grąžindamas 0, net jei suliejimas sustojo dėl konfliktų (#21), todėl vėliau patikrinkite status. Jei nevyksta suliejimas, merge --continue baigia darbą grąžindamas 128. Suliejus jau įtrauktą šaką sukuriamas dar vienas suliejimo commit (#6), o neįrašyti sekamų failų pakeitimai perrašomi, kaip ir naudojant checkout.
cherry-pick
Pritaikyti commit dabartinio HEAD pagrindu arba tęsti ar nutraukti vykstantį konfliktų sprendimą.
# 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
Sėkmės atveju nieko neišspausdinama. Jei nevyksta išrinkimas, --continue ir --abort baigia darbą grąžindami 128.
revert
Sukurti atkūrimo commit arba tęsti ar nutraukti vykstantį konfliktų sprendimą.
# 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
Sėkmės atveju nieko neišspausdinama. Jei nevyksta atkūrimas, --continue ir --abort baigia darbą grąžindami 128.
rebase
Perkelti dabartinę šaką ant kitos nuorodos.
# 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
Sėkmės atveju nieko neišspausdinama. Jei nevyksta perkėlimas iš naujo, --continue, --skip ir --abort išspausdina fatal: no rebase in progress ir baigia darbą grąžindami 128.
bisect
Dvejetainės paieškos būdu rasti pakeitimą įvedusį commit.
# 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 ir bad išveda visą kito kandidato, kuris bus atvertas, maišą. Kai lieka tik vienas įtariamasis, tas pats maišas išvedamas dar kartą: tas pakeitimas yra pirmasis netinkamas pakeitimas. Skirtingai nei git, santrauka „tai pirmasis netinkamas pakeitimas“ neišvedama.
stash
Išsaugoti ir atkurti darbinio katalogo pakeitimus.
# 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
Pranešimas yra argumentas po push arba save; -m nepalaikomas ir būtų išsaugotas kaip pranešimas. pop, apply ir drop visada naudoja stash@{0}. Jie išspausdina Saved working directory to stash abc1234, Applied and dropped stash, Applied stash ir Dropped stash.
Laikinų pakeitimų sąrašo išvestis:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Kai įrašų daugiau nei vienas, drop ir pop šiuo metu palieka įrašą sąraše (#10), o apply perrašo neįrašytus pakeitimus failuose, kurių neliečia laikinas įrašas (#11).
blame
Rodyti failo eilučių autorius pagal HEAD.
pitmaster blame src/Repository.php
Išvestis:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Kiekvienoje eilutėje rodomi pirmieji 8 commit maišo simboliai ir pirmieji 30 autoriaus tapatybės simbolių (Name <email> timestamp timezone), be tarpų užpildo.
grep
Ieškoti failų turinyje dabartiniame HEAD medyje.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Išvestis:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Parinktys turi būti nurodytos prieš šabloną:
-i,--ignore-case: paieška nepaisant raidžių registro-E,--extended-regexp,--regex: šablonas laikomas PCRE reguliariąja išraiška
Išvedamas paprastas path:line:content be spalvų.
reflog
Rodyti reflog įrašus, pradedant naujausiu.
# 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"
Numatytasis formatas yra %gd: %gs (HEAD@{0}: commit: Add feature). Palaikomi šablonai: %gd ir %gD (selekcija), %gs (pranešimas), %H ir %h (naujas visas ir sutrumpintas maišas). Limitams galioja -n N, -nN ir --max-count N; -n 0 išspausdina visus įrašus.
pitmaster init sukurtose saugyklose reflog įrašai nefiksuojami, nebent core.logallrefupdates nustatyta į true faile .git/config (#8), todėl reflog ten nieko neišspausdina, kol ši nuostata nepakeista.
refs
Išvardyti visas nuorodas su jų maišais.
pitmaster refs
Išvestis:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Maišai išspausdinami pilni.
reset
Nustatyti HEAD į konkretų 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
Būtina nurodyti reviziją. Išvestis:
HEAD is now at abc1234
init
Inicijuoti naują saugyklą. Tai vienintelė komanda, kuriai nereikia esamos saugyklos.
# 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
Išvestis:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
--object-format priima sha1 (numatytoji reikšmė) ir sha256.
Išėjimo kodai
| Kodas | Reikšmė |
|---|---|
| 0 | Pavyko |
| 1 | Komandos klaida: naudojimo klaida, nežinoma komanda, nepavykusi operacija (error: <message>) arba dėl konfliktų sustabdytas sujungimas |
| 128 | Ne git saugykla (fatal: <message>), neatpažintas log argumentas arba --continue / --abort / --skip, kai nevykdoma jokia operacija |