CLI uzziņu rokasgrāmata
Pitmaster ietver CLI, kas atspoguļo daļu git komandu. Tas darbojas ar repozitoriju pašreizējā darba direktorijā.
./vendor/bin/pitmaster <command> [args...]
Instalējot no Composer, skripts atrodas ./vendor/bin/pitmaster; kopš 0.2.11 tas tur atrod projekta autoloader. Paša Pitmaster repozitorija izrakstījumā pēc composer install izpildiet ./bin/pitmaster. Tālākajos piemēros abiem ceļiem tiek izmantots pitmaster. Palaižot bez argumentiem, tiek parādīts komandu saraksts.
Redakcijas tiek atrisinātas līdzīgi kā Repository::resolve(): HEAD, zaru un tagu nosaukumi, pilni atsauču nosaukumi, pilni jaucējkodi un izteiksmes ~N / ^N. Saīsināti jaucējkodi netiek pieņemti. Klonēšana, ienešana un nosūtīšana ir pieejama tikai ar PHP API.
Komandas
log
Parāda commit vēsturi, sākot ar jaunāko.
# 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 ierobežojuma pieraksti (-n N, -nN, --max-count N, --max-count=N, -N) tika pievienoti versijā 0.2.11. Skaitlis bez prefiksa ir Pitmaster saīsinājums ierobežojuma norādīšanai. Pirmais pārējais arguments ir ceļa filtrs; viss pēc -- tiek uzskatīts par ceļu. Jebkurš cits arguments, kas sākas ar -, parāda fatal: unrecognized argument: <arg> un iziet ar kodu 128.
Izvadē ir iekļauts commit <hash> (dzeltens), Merge: rinda sapludināšanas commit, Author: ar neapstrādātu identitāti (vārds, e-pasts, laika zīmogs un laika josla) un ar atkāpi parādīts commit ziņojums. --oneline parāda abc1234 Subject. Ceļa filtrs atbilst vienam precīzam faila ceļam un pārbauda tikai piecas reizes lielāku jaunāko commit skaitu par norādīto ierobežojumu (darbība#7).
show
Parāda commit informāciju un atšķirības salīdzinājumā ar pirmo vecāku.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
Parāda commit metadatus (ar rindu Date:), kam seko vienotais diff. Anotētam tagam vispirms tiek parādīta taga galvene un ziņojums. Krāsas tiek izmantotas tikai tad, ja stdout ir terminālis. Sapludināšanas commit tiek parādīti bez diff.
cat-file
Izvada git objekta neapstrādāto saturu.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Pieņem pilnu jaucējvērtību. Izvada objektā saglabāto saturu: blob, komitus un tagus kā tekstu, bet kokus to binārajā formā. Atšķirībā no git cat-file -p koki netiek formatēti lasāmā veidā.
status
Parādīt darba koka statusu.
pitmaster status
pitmaster status --porcelain=v2
Izvade:
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ā iekļautie faili tiek rādīti zaļā krāsā, bet neindeksētie, nesapludinātie un neizsekotie — sarkanā. Konfliktējošas sapludināšanas laikā tiek parādīta sadaļa Unmerged paths:. Atdalīta HEAD gadījumā tiek izvadīts HEAD detached, bet tīra koka gadījumā — nothing to commit, working tree clean. --porcelain=v2 izvada komandas Repository::statusPorcelainV2() rezultātu.
diff
Parādīt izmaiņas starp indeksu un darba koku (neindeksētās izmaiņas).
# 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
Izvade ir krāsains vienotais diff arī tad, ja stdout nav terminālis. Modificētiem teksta failiem tā atbilst git diff; jauni, dzēsti, bināri, pārdēvēti un režīmu mainījuši faili tiek formatēti citādi (sk. Diff). Pirms pirmā komita diff --cached neko neizvada (#5).
add
Pievienot failus nākamajam komitam.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Katrs fails tiek nolasīts no darba koka, ierakstīts kā blob objekts, un indekss tiek atjaunināts. Argumenti ir failu ceļi; direktorijas un . netiek izvērsti.
commit
Izveidot komitu no indeksā iekļautajiem failiem.
pitmaster commit -m "Add new feature"
Izvade:
[main abc1234] Add new feature
-m ir obligāts, izņemot gadījumus, kad tiek pabeigta apturēta sapludināšana, cherry-pick, atgriešana vai rebase — tad tiek izmantots sagatavotais ziņojums. Autors un komitētājs tiek noteikts pēc vides mainīgajiem, konstantēm un .git/config, kā aprakstīts sadaļā Darba sākšana.
branch
Uzskaitīt zarus vai izveidot jaunu zaru.
# 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
Uzskaites izvade:
bugfix/typo
feature/login
* main
Izveidojot zaru, tiek izvadīts Created branch <name>, bet dzēšot — Deleted branch <name>. -d un -D darbojas vienādi: neviena komanda nepārbauda, vai zars ir sapludināts, un abas atsakās dzēst pašlaik izrakstīto zaru.
tag
Uzskaitīt tagus vai izveidot jaunu tagu.
# 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"
Izveidojot tagu, tiek izvadīts Created tag <name>.
checkout
Pārslēgt zarus vai atdalīt 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
Atjaunina HEAD, indeksu un darba koku, lai tie atbilstu mērķim, un izvada Switched to '<target>'. Komanda atsakās darboties, ja lokālas izmaiņas vai neizsekoti faili atrodas ceļos, kas atšķiras abos kokos. Neizpildītas izmaiņas citos izsekotajos failos tiek pārrakstītas ar mērķa saturu, ja git tās saglabātu (#2); vispirms izveidojiet komitu vai noglabājiet tās.
merge
Sapludināt vienu vai vairākus zarus pašreizējā HEAD vai turpināt/pārtraukt notiekošu sapludināšanu ar konfliktiem.
# 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
Izvade veiksmīgas izpildes gadījumā:
Merge successful.
Izvade konflikta gadījumā (stderr, izejas kods 1):
CONFLICT in: src/File.php, src/Other.php
-s pieņem ours, ort un recursive; ort un recursive izmanto noklusēto sapludināšanu. Izmantojot -s, CLI izvada Merge successful. un beidz darbu ar kodu 0 pat tad, ja sapludināšana apstājusies konfliktu dēļ (#21), tāpēc pēc tam pārbaudiet status. Ja merge --continue tiek izpildīts, kad nenotiek sapludināšana, tas beidz darbu ar 128. Jau sapludināta zara atkārtota sapludināšana izveido vēl vienu sapludināšanas komitu (#6), un neizpildītas izmaiņas izsekotajos failos tiek pārrakstītas tāpat kā ar checkout.
cherry-pick
Piemērot komitu virs pašreizējā HEAD vai turpināt/pārtraukt notiekošu darbību ar konfliktu.
# 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
Veiksmīgas izpildes gadījumā nekas netiek izvadīts. --continue un --abort, ja nenotiek cherry-pick, beidz darbu ar 128.
revert
Izveidot atgriešanas komitu vai turpināt/pārtraukt notiekošu darbību ar konfliktu.
# 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
Veiksmīgas izpildes gadījumā nekas netiek izvadīts. --continue un --abort, ja nenotiek atgriešana, beidz darbu ar 128.
rebase
Pārbāzēt pašreizējo zaru uz citas atsauces.
# 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
Veiksmīgas izpildes gadījumā nekas netiek izvadīts. Ja nenotiek rebase, --continue, --skip un --abort izvada fatal: no rebase in progress un beidz darbu ar 128.
bisect
Ar bināro meklēšanu atrast komitu, kurā ieviestas izmaiņas.
# 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 un bad izvada pilnu nākamā kandidāta jaucējvērtību un izraksta šo komitu. Kad palicis tikai viens aizdomīgais komits, tā pati jaucējvērtība tiek izvadīta vēlreiz: tas ir pirmais sliktais komits. Atšķirībā no git netiek izvadīts kopsavilkums “is the first bad commit”.
stash
Saglabāt un atjaunot darba direktorijas izmaiņas.
# 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
Ziņojums ir arguments pēc push vai save; -m netiek atbalstīts un tiktu saglabāts kā ziņojums. pop, apply un drop vienmēr izmanto stash@{0}. Tās izvada Saved working directory to stash abc1234, Applied and dropped stash, Applied stash un Dropped stash.
Noglabāto izmaiņu saraksta izvade:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Ja ir vairāk nekā viens ieraksts, drop un pop pašlaik atstāj ierakstu sarakstā (#10), bet apply pārraksta neizpildītas izmaiņas failos, kurus noglabātās izmaiņas neskar (#11).
blame
Parādīt faila rindu autorību pa rindām HEAD versijā.
pitmaster blame src/Repository.php
Izvade:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Katrā rindā tiek rādītas pirmās 8 komita jaucējvērtības rakstzīmes un pirmās 30 autora identitātes rakstzīmes (Name <email> timestamp timezone) bez aizpildījuma.
grep
Meklēt failu saturu pašreizējā HEAD kokā.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Izvade:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Opcijām jābūt pirms raksta:
-i,--ignore-case: reģistrnejutīga atbilstība-E,--extended-regexp,--regex: uztvert rakstu kā PCRE regulāro izteiksmi
Izvade ir vienkāršs path:line:content bez krāsām.
reflog
Parādīt reflog ierakstus, sākot ar jaunākajiem.
# 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"
Noklusētais formāts ir %gd: %gs (HEAD@{0}: commit: Add feature). Atbalstītie vietturi: %gd un %gD (atlasītājs), %gs (ziņojums), %H un %h (pilna un saīsināta jaunā jaucējvērtība). Ierobežojumiem pieņem -n N, -nN un --max-count N; -n 0 izvada visus ierakstus.
Ar pitmaster init izveidotos repozitorijos reflog ieraksti netiek reģistrēti, ja vien core.logallrefupdates nav iestatīts uz true failā .git/config (#8), tāpēc reflog tur neko neizvada, kamēr tas nav iestatīts.
refs
Uzskaitīt visas atsauces un to jaucējvērtības.
pitmaster refs
Izvade:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Jaucējvērtības tiek izvadītas pilnā garumā.
reset
Atiestatīt HEAD uz konkrētu komitu.
# 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
Nepieciešama revīzija. Izvade:
HEAD is now at abc1234
init
Inicializēt jaunu repozitoriju. Šī ir vienīgā komanda, kurai nav nepieciešams esošs repozitorijs.
# 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
Izvade:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
--object-format pieņem sha1 (noklusējums) un sha256.
Izejas kodi
| Kods | Nozīme |
|---|---|
| 0 | Veiksmīgi |
| 1 | Komandas kļūda: lietojuma kļūda, nezināma komanda, neveiksmīga darbība (error: <message>) vai sapludināšana, kas apstājusies konfliktu dēļ |
| 128 | Nav git repozitorijs (fatal: <message>), neatpazīts log arguments vai --continue / --abort / --skip, ja nenotiek neviena darbība |