Referensi CLI
Pitmaster menyertakan CLI yang mencerminkan sebagian perintah git. Ini beroperasi pada repositori di direktori kerja saat ini.
./vendor/bin/pitmaster <command> [args...]
Dari instalasi Composer, skripnya adalah ./vendor/bin/pitmaster; sejak 0.2.11, skrip ini menemukan autoloader proyek di sana. Di checkout repositori Pitmaster itu sendiri, jalankan ./bin/pitmaster setelah composer install. Contoh di bawah menggunakan pitmaster untuk kedua jalur. Menjalankannya tanpa argumen akan mencetak daftar perintah.
Revisi ditentukan seperti Repository::resolve(): HEAD, nama branch dan tag, nama ref lengkap, hash lengkap, serta ekspresi ~N / ^N. Hash singkat tidak diterima. Clone, fetch, dan push hanya tersedia melalui PHP API.
Perintah
log
Tampilkan riwayat commit, dari yang terbaru.
# 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
Ejaan batas git (-n N, -nN, --max-count N, --max-count=N, -N) ditambahkan di 0.2.11. Angka tanpa awalan adalah singkatan Pitmaster sendiri untuk batas. Argumen lain pertama menjadi filter jalur; semua argumen setelah -- dianggap sebagai jalur. Argumen lain apa pun yang dimulai dengan - akan mencetak fatal: unrecognized argument: <arg> dan keluar dengan 128.
Output mencakup commit <hash> (kuning), baris Merge: untuk commit merge, Author: dengan identitas mentah (nama, email, cap waktu, dan zona waktu), serta pesan commit yang diindentasi. --oneline mencetak abc1234 Subject. Filter jalur mencocokkan satu jalur file persis dan hanya memeriksa lima kali jumlah batas commit terbaru (#7).
show
Tampilkan detail commit dan diff terhadap parent pertama.
# Show HEAD
pitmaster show
# Show a specific commit
pitmaster show HEAD~3
pitmaster show v1.0.0
pitmaster show 3f2c1e0b9d6a4f8e7c5b2a1d0e9f8c7b6a5d4e3f
Menampilkan metadata commit (dengan baris Date:) diikuti diff terpadu. Untuk tag beranotasi, header dan pesan tag ditampilkan terlebih dahulu. Warna hanya digunakan saat stdout adalah terminal. Commit merge ditampilkan tanpa diff.
cat-file
Cetak konten mentah objek git.
pitmaster cat-file a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Menerima hash lengkap. Mencetak konten tersimpan objek: blob, commit, dan tag sebagai teks, sedangkan tree dalam bentuk binernya. Berbeda dengan git cat-file -p, tree tidak dicetak dalam format yang mudah dibaca.
status
Tampilkan status working tree.
pitmaster status
pitmaster status --porcelain=v2
Keluaran:
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
File yang sudah di-stage ditampilkan dengan warna hijau, sedangkan file yang belum di-stage, belum digabungkan, dan tidak dilacak ditampilkan dengan warna merah. Bagian Unmerged paths: muncul saat terjadi konflik merge. HEAD yang terlepas mencetak HEAD detached, dan tree yang bersih mencetak nothing to commit, working tree clean. --porcelain=v2 mencetak output dari Repository::statusPorcelainV2().
diff
Tampilkan perubahan antara indeks dan working tree (perubahan yang belum di-stage).
# 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
Output berupa diff terpadu berwarna, termasuk saat stdout bukan terminal. Format ini cocok dengan git diff untuk file teks yang diubah; file baru, dihapus, biner, berganti nama, dan berubah mode diformat secara berbeda (lihat Diff). diff --cached tidak mencetak apa pun sebelum commit pertama (#5).
add
Stage file untuk commit berikutnya.
pitmaster add src/Feature.php
pitmaster add src/Feature.php tests/FeatureTest.php README.md
Setiap file dibaca dari working tree, ditulis sebagai objek blob, lalu indeks diperbarui. Argumen berupa jalur file; direktori dan . tidak diperluas.
commit
Buat commit dari file yang sudah di-stage.
pitmaster commit -m "Add new feature"
Keluaran:
[main abc1234] Add new feature
-m wajib diisi, kecuali saat menyelesaikan merge, cherry-pick, revert, atau rebase yang terhenti; dalam kasus tersebut, pesan yang sudah disiapkan akan digunakan. Author dan committer ditentukan dari variabel lingkungan, konstanta, dan .git/config, sesuai penjelasan di Memulai.
branch
Daftarkan branch atau buat branch baru.
# 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 untuk daftar:
bugfix/typo
feature/login
* main
Pembuatan mencetak Created branch <name>, penghapusan mencetak Deleted branch <name>. -d dan -D berperilaku sama: keduanya tidak memeriksa apakah branch sudah digabungkan, dan menolak menghapus branch yang sedang di-checkout.
tag
Daftarkan tag atau buat tag baru.
# 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"
Pembuatan mencetak Created tag <name>.
checkout
Beralih branch atau lepaskan 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
Memperbarui HEAD, indeks, dan working tree agar sesuai dengan target, lalu mencetak Switched to '<target>'. Operasi ditolak jika ada perubahan lokal atau file yang tidak dilacak pada jalur yang berbeda antara kedua tree. Perubahan yang belum di-commit pada file terlacak lainnya akan ditimpa dengan konten target, padahal git akan mempertahankannya (#2); commit atau stash perubahan tersebut terlebih dahulu.
merge
Gabungkan satu atau beberapa branch ke HEAD saat ini, atau lanjutkan/batalkan konflik merge yang sedang berlangsung.
# 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 jika berhasil:
Merge successful.
Output jika terjadi konflik (di stderr, kode keluar 1):
CONFLICT in: src/File.php, src/Other.php
-s menerima ours, ort, dan recursive; ort dan recursive sama-sama menggunakan merge default. Dengan -s, CLI mencetak Merge successful. dan keluar dengan 0 meskipun merge berhenti karena konflik (#21), jadi periksa status sesudahnya. merge --continue tanpa merge yang sedang berlangsung akan keluar dengan 128. Menggabungkan branch yang sudah digabung akan membuat commit merge lain (#6), dan perubahan yang belum di-commit pada file terlacak akan ditimpa seperti pada checkout.
cherry-pick
Terapkan commit di atas HEAD saat ini, atau lanjutkan/batalkan konflik yang sedang berlangsung.
# 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
Tidak mencetak apa pun jika berhasil. --continue dan --abort tanpa cherry-pick yang sedang berlangsung akan keluar dengan 128.
revert
Buat commit revert, atau lanjutkan/batalkan konflik yang sedang berlangsung.
# 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
Tidak mencetak apa pun jika berhasil. --continue dan --abort tanpa revert yang sedang berlangsung akan keluar dengan 128.
rebase
Rebase branch saat ini ke ref lain.
# 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
Tidak mencetak apa pun jika berhasil. --continue, --skip, dan --abort tanpa rebase yang sedang berlangsung akan mencetak fatal: no rebase in progress dan keluar dengan 128.
bisect
Temukan commit yang memperkenalkan perubahan dengan pencarian biner.
# 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, dan bad mencetak hash lengkap kandidat berikutnya, yang kemudian di-checkout. Jika hanya tersisa satu kandidat yang dicurigai, hash yang sama dicetak lagi: commit itulah commit buruk pertama. Berbeda dari git, ringkasan "adalah commit buruk pertama" tidak dicetak.
stash
Simpan dan pulihkan perubahan direktori kerja.
# 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
Pesan adalah argumen setelah push atau save; -m tidak didukung dan akan disimpan sebagai pesan. pop, apply, dan drop selalu menggunakan stash@{0}. Ketiganya mencetak Saved working directory to stash abc1234, Applied and dropped stash, Applied stash, dan Dropped stash.
Output daftar stash:
stash@{0}: On main: Work in progress on login
stash@{1}: WIP on main: abc1234 Add new feature
Jika ada lebih dari satu entri, drop dan pop saat ini membiarkan entri tetap ada dalam daftar (#10), dan apply menimpa perubahan yang belum di-commit pada file yang tidak disentuh stash (#11).
blame
Tampilkan atribusi penulis per baris untuk file di HEAD.
pitmaster blame src/Repository.php
Keluaran:
a1b2c3d4 (Jane Smith <jane@example.com> ) <?php
a1b2c3d4 (Jane Smith <jane@example.com> )
f5e6d7c8 (Ann Lee <ann@example.com> 1700) declare(strict_types=1);
Setiap baris menampilkan 8 karakter pertama hash commit dan 30 karakter pertama identitas penulis (Name <email> timestamp timezone), tanpa padding.
grep
Cari isi file di pohon HEAD saat ini.
pitmaster grep "function merge"
pitmaster grep -i -E "h.llo"
Keluaran:
src/Repository.php:2257: public function merge(string $branch, string $strategy = 'recursive'): MergeResult
src/Merge/ThreeWayMerge.php:23: public static function merge(
Opsi harus ditulis sebelum pola:
-i,--ignore-case: pencocokan tanpa membedakan huruf besar dan kecil-E,--extended-regexp,--regex: perlakukan pola sebagai ekspresi reguler PCRE
Output berupa path:line:content biasa tanpa warna.
reflog
Tampilkan entri reflog, yang terbaru lebih dulu.
# 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"
Format default adalah %gd: %gs (HEAD@{0}: commit: Add feature). Placeholder yang didukung: %gd dan %gD (pemilih), %gs (pesan), %H dan %h (hash baru lengkap dan pendek). Batas menerima -n N, -nN, dan --max-count N; -n 0 mencetak semua entri.
Repositori yang dibuat oleh pitmaster init tidak merekam reflog kecuali core.logallrefupdates diatur ke true dalam .git/config (#8), sehingga reflog tidak mencetak apa pun di sana sampai pengaturan itu diterapkan.
refs
Cantumkan semua ref beserta hash-nya.
pitmaster refs
Keluaran:
abc123def456... refs/heads/main
789012abc345... refs/heads/feature/login
def456789012... refs/tags/v1.0.0
Hash dicetak secara lengkap.
reset
Atur ulang HEAD ke commit tertentu.
# 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
Revisi wajib diisi. Output:
HEAD is now at abc1234
init
Inisialisasi repositori baru. Hanya perintah ini yang tidak memerlukan repositori yang sudah ada.
# 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
Keluaran:
Initialized empty Pitmaster repository in /path/to/new-project/.git/
--object-format menerima sha1 (default) dan sha256.
Kode keluar
| Kode | Arti |
|---|---|
| 0 | Berhasil |
| 1 | Kesalahan perintah: kesalahan penggunaan, perintah tidak dikenal, operasi gagal (error: <message>), atau merge yang terhenti karena konflik |
| 128 | Bukan repositori git (fatal: <message>), argumen log tidak dikenal, atau --continue / --abort / --skip tanpa operasi yang sedang berlangsung |