Repo melengkapi Git dengan menyederhanakan pekerjaan di beberapa repositori. Untuk penjelasan hubungan antara Repo dan Git, lihat Alat kontrol sumber. Untuk mengetahui detail selengkapnya tentang Repo, lihat README Repo
Penggunaan repo memiliki bentuk berikut:
repo command options
Elemen opsional ditampilkan dalam tanda kurung []. Misalnya, banyak perintah menggunakan project-list sebagai argumen. Anda dapat menentukan project-list sebagai daftar nama atau daftar jalur ke direktori sumber lokal untuk project:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
help
repo help
Memberikan bantuan tentang perintah repo
. Anda dapat melihat informasi mendetail tentang
perintah Repo tertentu yang menentukan perintah sebagai opsi:
repo help command
Misalnya, perintah berikut menghasilkan deskripsi dan daftar opsi
untuk perintah init
:
repo help init
Atau, untuk hanya melihat daftar opsi yang tersedia untuk perintah, jalankan:
repo command --help
Contoh:
repo init --help
init
repo init -u url [options]
Menginstal Repo di direktori saat ini. Perintah ini membuat direktori .repo/
dengan repositori Git untuk kode sumber Repo dan
file manifes Android standar.
Opsi:
-u
: Tentukan URL tempat repositori manifes akan diambil. Manifes umum ditemukan dihttps://android.googlesource.com/platform/manifest
.-m
: Memilih file manifes dalam repositori. Jika tidak ada nama manifes yang dipilih, defaultnya adalahdefault.xml
.-b
: Menentukan revisi, yaitu manifest-branch tertentu.
sinkronkan
repo sync [project-list]
Mendownload perubahan baru dan memperbarui file yang sedang digunakan di lingkungan lokal Anda,
yang pada dasarnya menyelesaikan git fetch
di semua repositori Git. Jika Anda menjalankan
repo sync
tanpa argumen, file akan disinkronkan untuk semua project.
Saat Anda menjalankan repo sync
, hal berikut akan terjadi:
Jika project belum pernah disinkronkan,
repo sync
setara dengangit clone
; semua cabang di repositori jarak jauh akan disalin ke direktori project lokal.Jika project telah disinkronkan sebelumnya,
repo sync
setara dengan:git remote update git rebase origin/branch
Dengan branch adalah cabang yang saat ini diambil di direktori project lokal. Jika cabang lokal tidak melacak cabang di repositori jarak jauh, tidak akan ada sinkronisasi untuk project.
Setelah repo sync
berhasil dijalankan, kode dalam project yang ditentukan
akan diperbarui dan disinkronkan dengan kode di repositori jarak jauh.
Opsi kunci:
-c
: Hanya mengambil cabang manifes saat ini dari server.-d
: Mengalihkan project yang ditentukan kembali ke revisi manifes. Opsi ini berguna jika project berada di cabang topik, tetapi revisi manifes diperlukan untuk sementara.-f
: Lanjutkan menyinkronkan project lain meskipun project gagal disinkronkan.threadcount
: Memisahkan sinkronisasi di seluruh thread untuk menyelesaikan lebih cepat. Pastikan Anda tidak membebani mesin - sisakan beberapa CPU untuk tugas lain. Untuk melihat jumlah CPU yang tersedia, jalankannproc --all
terlebih dahulu.-q
: Berjalan dengan senyap dengan menyembunyikan pesan status.-s
: Menyinkronkan ke build yang diketahui baik seperti yang ditentukan oleh elemenmanifest-server
dalam manifes saat ini.
Untuk opsi lainnya, jalankan repo help sync
.
upload
repo upload [project-list]
Mengupload perubahan ke server peninjauan. Untuk project yang ditentukan, Repo membandingkan cabang lokal dengan cabang jarak jauh yang diperbarui selama sinkronisasi Repo terakhir. Repo meminta Anda untuk memilih satu atau beberapa cabang yang belum diupload untuk ditinjau.
Semua commit pada cabang yang dipilih kemudian dikirim ke Gerrit melalui koneksi HTTPS. Anda perlu mengonfigurasi sandi HTTPS untuk mengaktifkan otorisasi upload. Untuk membuat pasangan nama pengguna/sandi baru yang akan digunakan melalui HTTPS, buka Pembuat sandi.
Saat menerima data objek melalui servernya, Gerrit akan mengubah setiap commit menjadi perubahan sehingga peninjau dapat mengomentari commit tertentu.
Untuk menggabungkan beberapa commit checkpoint menjadi satu commit, gunakan git rebase -i
sebelum Anda menjalankan upload.
Jika Anda menjalankan repo upload
tanpa argumen, repo upload
akan menelusuri semua project untuk menemukan perubahan yang akan diupload.
Untuk mengedit perubahan setelah diupload, gunakan alat seperti git rebase -i
atau
git commit --amend
untuk memperbarui commit lokal Anda. Setelah pengeditan selesai:
- Pastikan cabang yang diperbarui adalah cabang yang saat ini diambil.
- Gunakan
repo upload --replace PROJECT
untuk membuka editor pencocokan perubahan. Untuk setiap commit dalam rangkaian, masukkan ID perubahan Gerrit di dalam tanda kurung:
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacements # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
Setelah upload selesai, perubahan akan memiliki set patch tambahan.
Jika Anda hanya ingin mengupload cabang Git yang saat ini di-check out, gunakan flag
--current-branch
(atau --cbr
untuk singkatnya).
Untuk perubahan terkait, sebaiknya simpan semua CL dalam topik yang sama. Anda dapat
menambahkan nama topik saat mengupload dengan --topic=TOPIC
. Atau, cukup teruskan -t
untuk menetapkan
nama topik yang sama dengan nama cabang lokal.
diff
repo diff [project-list]
Menampilkan perubahan yang belum selesai antara commit dan hierarki kerja menggunakan
git diff
.
download
repo download target change
Mendownload perubahan yang ditentukan dari sistem peninjauan dan menyediakannya di direktori kerja lokal project Anda.
Misalnya, untuk mendownload
change 23823 ke direktori
platform/build
Anda:
repo download platform/build 23823
Menjalankan repo sync
akan menghapus semua commit yang diambil dengan repo download
. Atau, Anda
dapat memeriksa cabang jarak jauh menggunakan git checkout m/main
.
forall
repo forall [project-list] -c command
Menjalankan perintah shell yang diberikan di setiap project. Variabel lingkungan tambahan
berikut disediakan oleh repo forall
:
REPO_PROJECT
ditetapkan ke nama unik project.REPO_PATH
adalah jalur yang relatif terhadap root klien.REPO_REMOTE
adalah nama sistem jarak jauh dari manifes.REPO_LREV
adalah nama revisi dari manifes, yang diterjemahkan ke cabang pelacakan lokal. Gunakan variabel ini jika Anda perlu meneruskan revisi manifes ke perintah Git yang dijalankan secara lokal.REPO_RREV
adalah nama revisi dari manifes, persis seperti yang ditulis dalam manifes.
Opsi:
-c
: Perintah dan argumen yang akan dieksekusi. Perintah dievaluasi melalui/bin/sh
dan argumen apa pun setelah diteruskan sebagai parameter posisi shell.-p
: Menampilkan header project sebelum output perintah yang ditentukan. Hal ini dicapai dengan mengikat pipa ke aliran stdin, stdout, dan sterr perintah, dan memasukkan semua output ke dalam aliran berkelanjutan yang ditampilkan dalam satu sesi pager.-v
: Menampilkan pesan yang ditulis perintah ke stderr.
prune
repo prune [project-list]
Memangkas (menghapus) topik yang sudah digabungkan.
start
repo start branch-name [project-list]
Memulai cabang baru untuk pengembangan, mulai dari revisi yang ditentukan dalam manifes.
Argumen BRANCH_NAME
memberikan deskripsi singkat tentang perubahan yang Anda coba lakukan pada project. Jika Anda tidak tahu, pertimbangkan untuk menggunakan nama
default
.
Argumen project-list
menentukan project yang berpartisipasi dalam cabang
topik ini.
status
repo status [project-list]
Membandingkan hierarki kerja dengan area staging (indeks) dan commit terbaru di cabang ini (HEAD) di setiap project yang ditentukan. Menampilkan baris ringkasan untuk setiap file yang memiliki perbedaan antara ketiga status ini.
Untuk melihat status cabang saat ini saja, jalankan repo status .
. Informasi status dicantumkan menurut project. Untuk setiap file dalam project, kode dua huruf
akan digunakan.
Di kolom pertama, huruf besar menunjukkan perbedaan area staging dari status yang terakhir di-commit.
Letter | Arti | Deskripsi |
---|---|---|
- | Tidak ada perubahan | Sama di HEAD dan indeks |
A | Ditambahkan | Tidak ada di HEAD, ada di indeks |
S | Diubah | Di HEAD, diubah dalam indeks |
D | Dihapus | Di HEAD, bukan di indeks |
R | Nama telah diganti | Tidak ada di HEAD, jalur diubah di indeks |
C | Disalin | Tidak ada di HEAD, disalin dari URL lain dalam indeks |
T | Mode diubah | Konten yang sama di HEAD dan indeks, mode diubah |
U | Tidak digabungkan | Konflik antara HEAD dan indeks; resolusi diperlukan |
Di kolom kedua, huruf kecil menunjukkan perbedaan antara direktori kerja dengan indeks.
Letter | Arti | Deskripsi |
---|---|---|
- | Baru/tidak diketahui | Tidak ada dalam indeks, dalam hierarki kerja |
m | Diubah | Dalam indeks, dalam hierarki kerja, diubah |
d | Dihapus | Dalam indeks, bukan dalam hierarki kerja |
Menangani error repo
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
Error repo: error: no branches ready for upload
muncul saat perintah
repo start
tidak dijalankan di awal sesi. Untuk memulihkan, Anda dapat memeriksa
ID commit, memulai cabang baru, lalu menggabungkannya.