Repo melengkapi Git dengan menyederhanakan pekerjaan di beberapa repositori. Lihat Alat Kontrol Sumber untuk penjelasan tentang hubungan antara Repo dan Git. Untuk detail lebih lanjut tentang Repo, lihat Repo README .
Penggunaan repo mengambil 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 proyek:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
Tolong
Halaman ini hanya menyoroti opsi utama. Lihat bantuan baris perintah untuk detail selengkapnya. Saat Repo diinstal, Anda dapat menemukan dokumentasi terbaru yang dimulai dengan ringkasan semua perintah dengan menjalankan:
repo help
Anda dapat melihat informasi terperinci tentang perintah apa pun dengan menjalankan ini di dalam pohon Repo:
repo help command
Misalnya, perintah berikut menghasilkan deskripsi dan daftar opsi untuk argumen init
dari Repo, yang menginisialisasi Repo di direktori saat ini. (Lihat init untuk detailnya.)
repo help init
Atau untuk hanya melihat daftar opsi yang tersedia, jalankan:
repo command --helpMisalnya:
repo init --help
init
repo init -u url [options]
Menginstal Repo di direktori saat ini. Ini membuat direktori .repo/
dengan repositori Git untuk kode sumber Repo dan file manifes Android standar.
Pilihan:
-
-u
: Tentukan URL untuk mengambil repositori manifes. Manifes umum ditemukan dihttps://android.googlesource.com/platform/manifest
. -
-m
: Pilih file manifes di dalam repositori. Jika tidak ada nama manifes yang dipilih, defaultnya adalahdefault.xml
. -
-b
: Tentukan revisi, yaitu manifest-branch tertentu.
Catatan: Untuk semua perintah Repo yang tersisa, direktori kerja saat ini harus berupa direktori induk dari .repo/
atau subdirektori dari direktori induk.
sinkronisasi
repo sync [project-list]
Mengunduh perubahan baru dan memperbarui file yang berfungsi di lingkungan lokal Anda, pada dasarnya menyelesaikan git fetch
di semua repositori Git. Jika Anda menjalankan repo sync
tanpa argumen, itu menyinkronkan file untuk semua proyek.
Saat Anda menjalankan repo sync
, inilah yang terjadi:
Jika proyek belum pernah disinkronkan, maka
repo sync
setara dengangit clone
. Semua cabang di repositori jarak jauh disalin ke direktori proyek lokal.Jika proyek telah disinkronkan sebelumnya, maka
repo sync
setara dengan:git remote update git rebase origin/branch
di mana
branch
adalah cabang yang saat ini diperiksa di direktori proyek lokal. Jika cabang lokal tidak melacak cabang di repositori jarak jauh, maka tidak ada sinkronisasi yang terjadi untuk proyek tersebut.Jika operasi Git rebase menghasilkan konflik penggabungan, gunakan perintah Git normal (misalnya,
git rebase --continue
) untuk menyelesaikan konflik.
Setelah sukses menjalankan repo sync
, kode dalam proyek tertentu diperbarui dan disinkronkan dengan kode di repositori jarak jauh.
Berikut adalah opsi utama. Lihat repo help sync
untuk lebih lanjut:
-c
: Ambil hanya cabang manifes saat ini dari server.-d
: Mengalihkan proyek yang ditentukan kembali ke revisi manifes. Ini berguna jika proyek saat ini berada di cabang topik, tetapi revisi manifes diperlukan untuk sementara.-f
: Lanjutkan dengan menyinkronkan proyek lain meskipun proyek gagal disinkronkan.-j threadcount
: Pisahkan sinkronisasi di seluruh utas untuk penyelesaian yang lebih cepat. Pastikan Anda tidak membebani mesin Anda - biarkan beberapa CPU dicadangkan untuk tugas lain. Untuk melihat jumlah CPU yang tersedia, jalankan terlebih dahulu:nproc --all
-q
: Jalankan dengan tenang dengan menekan pesan status.-s
: Sinkronkan ke build bagus yang diketahui seperti yang ditentukan oleh elemen manifest-server dalam manifes saat ini.
mengunggah
repo upload [project-list]
Untuk proyek yang ditentukan, Repo membandingkan cabang lokal dengan cabang jarak jauh yang diperbarui selama sinkronisasi Repo terakhir. Repo meminta Anda untuk memilih satu atau lebih cabang yang belum diunggah untuk ditinjau.
Semua komit pada cabang yang dipilih kemudian ditransmisikan ke Gerrit melalui koneksi HTTPS. Anda perlu mengonfigurasi kata sandi HTTPS untuk mengaktifkan otorisasi pengunggahan. Kunjungi Pembuat Kata Sandi untuk menghasilkan pasangan nama pengguna/kata sandi baru untuk digunakan melalui HTTPS.
Saat Gerrit menerima data objek melalui servernya, Gerrit mengubah setiap komit menjadi perubahan sehingga peninjau dapat mengomentari komit tertentu. Untuk menggabungkan beberapa komit pos pemeriksaan menjadi satu komit, gunakan git rebase -i
sebelum Anda menjalankan unggahan.
Jika Anda menjalankan repo upload
tanpa argumen, itu akan mencari semua proyek untuk perubahan yang akan diunggah.
Untuk mengedit perubahan setelah diunggah, gunakan alat seperti git rebase -i
atau git commit --amend
untuk memperbarui commit lokal Anda. Setelah pengeditan Anda selesai:
- Verifikasi bahwa cabang yang diperbarui adalah cabang yang saat ini diperiksa.
- Untuk setiap komit dalam seri, 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 replacments # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
Setelah unggahan selesai, perubahan memiliki set tambalan tambahan.
Jika Anda hanya ingin mengunggah cabang Git yang saat ini diperiksa, gunakan flag --current-branch
(atau --cbr
untuk singkatnya).
berbeda
repo diff [project-list]
Menunjukkan perubahan luar biasa antara komit dan pohon kerja menggunakan git diff
.
unduh
repo download target change
Mengunduh perubahan yang ditentukan dari sistem peninjauan dan membuatnya tersedia di direktori kerja lokal proyek Anda.
Misalnya, untuk mengunduh perubahan 23823 ke direktori platform/build Anda:
repo download platform/build 23823
Menjalankan repo sync
menghapus semua komit yang diambil dengan repo download
. Atau Anda dapat memeriksa cabang jarak jauh menggunakan git checkout m/master
.
Catatan: Ada penundaan replikasi ke semua server di seluruh dunia, jadi ada sedikit jeda antara saat perubahan terlihat di web di Gerrit dan saat repo download
dapat menemukan perubahan untuk semua pengguna.
untuk semua
repo forall [project-list] -c command
Mengeksekusi perintah shell yang diberikan di setiap proyek. Variabel lingkungan tambahan berikut ini disediakan oleh repo forall
:
REPO_PROJECT
diatur ke nama unik proyek.REPO_PATH
adalah jalur relatif terhadap akar klien.REPO_REMOTE
adalah nama sistem jarak jauh dari manifes.REPO_LREV
adalah nama revisi dari manifes, diterjemahkan ke cabang pelacakan lokal. Gunakan ini jika Anda perlu meneruskan revisi manifes ke perintah Git yang dieksekusi secara lokal.REPO_RREV
adalah nama revisi dari manifes, persis seperti yang tertulis dalam manifes.
Pilihan:
-c
: Perintah dan argumen untuk dieksekusi. Perintah dievaluasi melalui/bin/sh
dan argumen apa pun setelah dilewatkan sebagai parameter posisi shell.-p
: Tampilkan header proyek sebelum output dari perintah yang ditentukan. Ini dicapai dengan mengikat pipa ke aliran stdin, stdout, dan sterr perintah, dan menyalurkan semua output ke aliran berkelanjutan yang ditampilkan dalam satu sesi pager.-v
: Menampilkan pesan yang ditulis perintah ke stderr.
memangkas
repo prune [project-list]
Memangkas (menghapus) topik yang sudah digabungkan.
Mulailah
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 proyek. Jika Anda tidak tahu, pertimbangkan untuk menggunakan nama default
.
Argumen project-list
proyek menentukan proyek mana yang berpartisipasi dalam cabang topik ini.
Catatan: Tanda titik ( . ) adalah singkatan untuk proyek di direktori kerja saat ini.
status
repo status [project-list]
Membandingkan pohon kerja dengan area pementasan (indeks) dan komit terbaru pada cabang ini (HEAD) di setiap proyek yang ditentukan. Menampilkan garis ringkasan untuk setiap file di mana ada perbedaan antara ketiga status ini.
Untuk melihat status cabang saat ini saja, jalankan repo status .
. Informasi status dicantumkan berdasarkan proyek. Untuk setiap file dalam proyek, kode dua huruf digunakan.
Di kolom pertama, huruf besar menunjukkan bagaimana staging area berbeda dari kondisi commit terakhir.
Surat | Arti | Keterangan |
---|---|---|
- | Tidak ada perubahan | Sama di HEAD dan indeks |
SEBUAH | Ditambahkan | Tidak di HEAD, di indeks |
M | Diubah | Di HEAD, dimodifikasi dalam indeks |
D | Dihapus | Di HEAD, bukan di indeks |
R | Berganti nama | Tidak di HEAD, jalur berubah dalam indeks |
C | disalin | Tidak di HEAD, disalin dari yang lain di indeks |
T | Modus berubah | Konten yang sama di HEAD dan indeks, mode berubah |
kamu | Tidak digabung | Konflik antara HEAD dan indeks; diperlukan resolusi |
Di kolom kedua, huruf kecil menunjukkan bagaimana direktori kerja berbeda dari indeks.
Surat | Arti | Keterangan |
---|---|---|
- | Baru/tidak diketahui | Tidak dalam indeks, di pohon kerja |
m | Diubah | Dalam indeks, di pohon kerja, dimodifikasi |
d | Dihapus | Dalam indeks, bukan di pohon kerja |
Menangani kesalahan 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 .
repo: error: no branches ready for upload
muncul ketika perintah repo start
tidak dijalankan pada awal sesi. Untuk memulihkan, Anda dapat memeriksa id komit, memulai cabang baru, lalu menggabungkannya.