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]
membantu
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 mendetail 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
Repo, yang menginisialisasi Repo di direktori saat ini. (Lihat init untuk detailnya.)
repo help init
Atau untuk melihat hanya daftar opsi yang tersedia, jalankan:
repo command --helpContoh:
repo init --help
init
repo init -u url [options]
Instal 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]
Unduh perubahan baru dan perbarui file yang berfungsi di lingkungan lokal Anda, yang pada dasarnya menyelesaikan git fetch
di semua repositori Git. Jika Anda menjalankan repo sync
tanpa argumen, ini akan menyinkronkan file untuk semua proyek.
Saat Anda menjalankan repo sync
, inilah yang terjadi:
Jika proyek belum pernah disinkronkan, maka
repo sync
sama dengangit clone
. Semua cabang di repositori jarak jauh disalin ke direktori proyek lokal.Jika proyek telah disinkronkan sebelumnya, maka
repo sync
sama 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 rebase Git menghasilkan konflik gabungan, gunakan perintah Git normal (misalnya,
git rebase --continue
) untuk menyelesaikan konflik.
Setelah berhasil menjalankan repo sync
, kode dalam proyek yang ditentukan diperbarui dan disinkronkan dengan kode di repositori jarak jauh.
Berikut adalah opsi kunci. Lihat repo help sync
untuk lebih lanjut:
-c
: Ambil hanya cabang manifes saat ini dari server.-d
: Ganti 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, pertama jalankan:nproc --all
-q
: Jalankan diam-diam 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 dikirimkan ke Gerrit melalui koneksi HTTPS. Anda perlu mengonfigurasi kata sandi HTTPS untuk mengaktifkan otorisasi unggahan. Kunjungi Penghasil Kata Sandi untuk membuat pasangan nama pengguna/kata sandi baru untuk digunakan melalui HTTPS.
Saat Gerrit menerima data objek melalui servernya, itu 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 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 komit lokal Anda. Setelah pengeditan Anda selesai:
- Verifikasi bahwa cabang yang diperbarui adalah cabang yang saat ini diperiksa.
- Gunakan
repo upload --replace PROJECT
untuk membuka editor pencocokan perubahan. - 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 pengunggahan selesai, perubahan memiliki kumpulan tambalan tambahan.
Jika Anda ingin mengunggah hanya cabang Git yang saat ini diperiksa, gunakan flag --current-branch
(atau singkatnya --cbr
).
perbedaan
repo diff [project-list]
Menampilkan perubahan luar biasa antara komit dan pohon kerja menggunakan git diff
.
unduh
repo download target change
Mengunduh perubahan yang ditentukan dari sistem tinjauan dan membuatnya tersedia di direktori kerja lokal proyek Anda.
Misalnya, untuk mengunduh ubah 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/main
.
Catatan: Ada penundaan replikasi ke semua server di seluruh dunia, jadi ada sedikit jeda pencerminan 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
Jalankan perintah shell yang diberikan di setiap proyek. Variabel lingkungan tambahan berikut disediakan oleh repo forall
:
REPO_PROJECT
diatur ke nama unik proyek.REPO_PATH
adalah jalur relatif ke 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 dijalankan secara lokal.REPO_RREV
adalah nama revisi dari manifes, persis seperti yang tertulis di manifes.
Pilihan:
-c
: Perintah dan argumen untuk dieksekusi. Perintah dievaluasi melalui/bin/sh
dan argumen apa pun setelah diteruskan sebagai parameter posisi shell.-p
: Tampilkan tajuk proyek sebelum keluaran dari perintah yang ditentukan. Ini dicapai dengan mengikat pipa ke aliran stdin, stdout, dan sterr perintah, dan menyalurkan semua keluaran ke aliran berkelanjutan yang ditampilkan dalam sesi pager tunggal.-v
: Tampilkan pesan yang ditulis perintah ke stderr.
memangkas
repo prune [project-list]
Pangkas (hapus) topik yang sudah digabungkan.
awal
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
menentukan proyek mana yang berpartisipasi dalam cabang topik ini.
Catatan: 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 baris ringkasan untuk setiap file di mana terdapat 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 area pementasan berbeda dari status komitmen terakhir.
Surat | Arti | Keterangan |
---|---|---|
- | Tidak ada perubahan | Sama di HEAD dan index |
A | Ditambahkan | Bukan di HEAD, di index |
M | Diubah | Di HEAD, dimodifikasi di index |
D | Dihapus | Di HEAD, bukan di index |
R | Berganti nama | Bukan di HEAD, jalur diubah di index |
C | Disalin | Bukan di HEAD, disalin dari yang lain di index |
T | Modus berubah | Konten yang sama di HEAD dan indeks, mode berubah |
AS | Terpisah | Konflik antara KEPALA 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 | Di indeks, di pohon kerja, dimodifikasi |
D | Dihapus | Di 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.