Referensi perintah repo

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 --help
Contoh:
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 di https://android.googlesource.com/platform/manifest .
  • -m : Pilih file manifes di dalam repositori. Jika tidak ada nama manifes yang dipilih, defaultnya adalah default.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 dengan git 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.