Repo bổ sung cho Git bằng cách đơn giản hóa công việc trên nhiều kho lưu trữ. Để biết giải thích về mối quan hệ giữa Repo và Git, hãy xem Công cụ kiểm soát nguồn . Để biết thêm chi tiết về Repo, hãy xem Repo README
Việc sử dụng repo có dạng sau:
repo command options
Các phần tử tùy chọn được hiển thị trong ngoặc []. Ví dụ: nhiều lệnh lấy project-list làm đối số. Bạn có thể chỉ định project-list dưới dạng danh sách tên hoặc danh sách đường dẫn đến thư mục nguồn cục bộ cho các dự án:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
giúp đỡ
repo help
Cung cấp trợ giúp về lệnh repo
. Bạn có thể xem thông tin chi tiết về lệnh Repo cụ thể chỉ định lệnh làm tùy chọn:
repo help command
Ví dụ: lệnh sau mang lại mô tả và danh sách các tùy chọn cho lệnh init
:
repo help init
Hoặc, để chỉ xem danh sách các tùy chọn có sẵn cho một lệnh, hãy chạy:
repo command --help
Ví dụ:
repo init --help
trong đó
repo init -u url [options]
Cài đặt Repo trong thư mục hiện tại. Lệnh này tạo một thư mục .repo/
với kho lưu trữ Git cho mã nguồn Repo và các tệp kê khai Android tiêu chuẩn.
Tùy chọn:
-u
: Chỉ định một URL để truy xuất kho lưu trữ tệp kê khai. Tệp kê khai chung được tìm thấy tạihttps://android.googlesource.com/platform/manifest
.-m
: Chọn tệp kê khai trong kho lưu trữ. Nếu không có tên kê khai nào được chọn thì tên mặc định làdefault.xml
.-b
: Chỉ định một bản sửa đổi, nghĩa là một manifest-branch cụ thể .
đồng bộ hóa
repo sync [project-list]
Tải xuống các thay đổi mới và cập nhật các tệp đang hoạt động trong môi trường cục bộ của bạn, về cơ bản hoàn thành việc git fetch
trên tất cả các kho lưu trữ Git. Nếu bạn chạy repo sync
mà không có đối số, nó sẽ đồng bộ hóa các tệp cho tất cả các dự án.
Khi bạn chạy repo sync
, đây là điều sẽ xảy ra:
Nếu dự án chưa bao giờ được đồng bộ hóa thì
repo sync
tương đương vớigit clone
; tất cả các nhánh trong kho lưu trữ từ xa đều được sao chép vào thư mục dự án cục bộ.Nếu dự án đã được đồng bộ hóa trước đó thì
repo sync
tương đương với:git remote update git rebase origin/branch
Trong đó branch là nhánh đã được kiểm xuất hiện tại trong thư mục dự án cục bộ. Nếu nhánh cục bộ không theo dõi nhánh trong kho lưu trữ từ xa thì dự án sẽ không được đồng bộ hóa.
Sau khi chạy repo sync
thành công, mã trong các dự án được chỉ định sẽ được cập nhật và đồng bộ hóa với mã trong kho lưu trữ từ xa.
Các tùy chọn chính:
-
-c
: Chỉ tìm nạp nhánh bảng kê khai hiện tại từ máy chủ. -
-d
: Chuyển các dự án được chỉ định trở lại bản sửa đổi tệp kê khai. Tùy chọn này hữu ích nếu dự án thuộc một nhánh chủ đề nhưng tạm thời cần sửa đổi bảng kê khai. -
-f
: Tiến hành đồng bộ hóa các dự án khác ngay cả khi dự án không đồng bộ hóa. -
threadcount
: Chia đồng bộ hóa giữa các luồng để hoàn thành nhanh hơn. Đảm bảo bạn không làm quá tải máy của mình - hãy dành một số CPU cho các tác vụ khác. Để xem số lượng CPU có sẵn, trước tiên hãy chạynproc --all
. -
-q
: Chạy lặng lẽ bằng cách chặn các thông báo trạng thái. -
-s
: Đồng bộ hóa với một bản dựng tốt đã biết như được chỉ định bởi phần tửmanifest-server
trong tệp kê khai hiện tại.
Để có thêm tùy chọn, hãy chạy repo help sync
.
tải lên
repo upload [project-list]
Tải các thay đổi lên máy chủ đánh giá. Đối với các dự án được chỉ định, Repo so sánh các nhánh cục bộ với các nhánh từ xa được cập nhật trong lần đồng bộ hóa Repo gần đây nhất. Repo nhắc bạn chọn một hoặc nhiều nhánh chưa được tải lên để xem xét.
Sau đó, tất cả các cam kết trên các nhánh đã chọn sẽ được truyền tới Gerrit qua kết nối HTTPS. Bạn cần định cấu hình mật khẩu HTTPS để bật ủy quyền tải lên. Để tạo cặp tên người dùng/mật khẩu mới để sử dụng qua HTTPS, hãy truy cập Trình tạo mật khẩu .
Khi Gerrit nhận được dữ liệu đối tượng qua máy chủ của nó, nó sẽ biến mỗi cam kết thành một thay đổi để người đánh giá có thể nhận xét về một cam kết cụ thể. Để kết hợp nhiều lần xác nhận điểm kiểm tra thành một lần xác nhận duy nhất, hãy sử dụng git rebase -i
trước khi bạn chạy tải lên.
Nếu bạn chạy repo upload
mà không có đối số, nó sẽ tìm kiếm tất cả các dự án để tìm những thay đổi cần tải lên.
Để chỉnh sửa các thay đổi sau khi chúng được tải lên, hãy sử dụng công cụ như git rebase -i
hoặc git commit --amend
để cập nhật các cam kết cục bộ của bạn. Sau khi chỉnh sửa của bạn hoàn tất:
- Xác minh rằng nhánh được cập nhật là nhánh đã được kiểm tra hiện tại.
- Sử dụng
repo upload --replace PROJECT
để mở trình chỉnh sửa khớp thay đổi. Đối với mỗi cam kết trong chuỗi, hãy nhập ID thay đổi Gerrit bên trong dấu ngoặc:
# 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.
Sau khi quá trình tải lên hoàn tất, các thay đổi sẽ có bộ bản vá bổ sung.
Nếu bạn chỉ muốn tải lên nhánh Git hiện đã được kiểm tra, hãy sử dụng cờ --current-branch
(hoặc viết tắt là --cbr
).
khác biệt
repo diff [project-list]
Hiển thị những thay đổi nổi bật giữa cam kết và cây làm việc bằng cách sử dụng git diff
.
Tải xuống
repo download target change
Tải xuống thay đổi đã chỉ định từ hệ thống đánh giá và cung cấp thay đổi đó trong thư mục làm việc cục bộ của dự án của bạn.
Ví dụ: để tải xuống thay đổi 23823 vào thư mục platform/build
của bạn:
repo download platform/build 23823
Việc chạy repo sync
sẽ xóa mọi cam kết được truy xuất bằng repo download
. Hoặc bạn có thể kiểm tra chi nhánh từ xa bằng cách sử dụng git checkout m/main
.
cho tất cả
repo forall [project-list] -c command
Thực thi lệnh shell đã cho trong mỗi dự án. Các biến môi trường bổ sung sau đây được cung cấp bởi repo forall
:
-
REPO_PROJECT
được đặt thành tên duy nhất của dự án. -
REPO_PATH
là đường dẫn tới thư mục gốc của máy khách. -
REPO_REMOTE
là tên của hệ thống từ xa trong bảng kê khai. -
REPO_LREV
là tên của bản sửa đổi từ tệp kê khai, được dịch sang nhánh theo dõi cục bộ. Sử dụng biến này nếu bạn cần chuyển bản sửa đổi tệp kê khai sang lệnh Git được thực thi cục bộ. -
REPO_RREV
là tên của bản sửa đổi từ tệp kê khai, chính xác như được ghi trong tệp kê khai.
Tùy chọn:
-
-c
: Lệnh và đối số để thực thi. Lệnh được đánh giá thông qua/bin/sh
và mọi đối số sau khi nó được truyền qua dưới dạng tham số vị trí shell. -
-p
: Hiển thị tiêu đề dự án trước khi xuất lệnh được chỉ định. Điều này đạt được bằng cách liên kết các đường ống với các luồng stdin, stdout và sterr của lệnh, đồng thời chuyển tất cả đầu ra thành một luồng liên tục được hiển thị trong một phiên máy nhắn tin. -
-v
: Hiển thị thông báo lệnh ghi vào stderr.
cắt tỉa
repo prune [project-list]
Cắt bỏ (xóa) các chủ đề đã được sáp nhập.
bắt đầu
repo start branch-name [project-list]
Bắt đầu một nhánh mới để phát triển, bắt đầu từ bản sửa đổi được chỉ định trong tệp kê khai.
Đối số BRANCH_NAME
cung cấp mô tả ngắn gọn về thay đổi mà bạn đang cố gắng thực hiện đối với dự án. Nếu bạn chưa biết thì hãy cân nhắc việc sử dụng tên default
.
Đối số project-list
chỉ định dự án nào tham gia vào nhánh chủ đề này.
trạng thái
repo status [project-list]
So sánh cây làm việc với khu vực tổ chức (chỉ mục) và cam kết gần đây nhất trên nhánh này (HEAD) trong mỗi dự án được chỉ định. Hiển thị dòng tóm tắt cho mỗi tệp trong đó có sự khác biệt giữa ba trạng thái này.
Để chỉ xem trạng thái của nhánh hiện tại, hãy chạy repo status .
. Thông tin trạng thái được liệt kê theo dự án. Đối với mỗi tệp trong dự án, một mã gồm hai chữ cái được sử dụng.
Trong cột đầu tiên, một chữ cái viết hoa cho biết khu vực tổ chức khác với trạng thái cam kết cuối cùng như thế nào.
Thư | Nghĩa | Sự miêu tả |
---|---|---|
- | Không thay đổi | Tương tự trong HEAD và chỉ mục |
MỘT | Thêm | Không có trong HEAD, trong chỉ mục |
M | Đã sửa đổi | Trong HEAD, được sửa đổi trong chỉ mục |
D | Đã xóa | Trong HEAD, không phải trong chỉ mục |
R | Đã đổi tên | Không có trong HEAD, đường dẫn đã thay đổi trong chỉ mục |
C | Đã sao chép | Không có trong HEAD, được sao chép từ một mục khác trong chỉ mục |
T | Đã thay đổi chế độ | Nội dung giống nhau trong HEAD và chỉ mục, chế độ đã thay đổi |
bạn | Đã hủy hợp nhất | Xung đột giữa HEAD và chỉ mục; yêu cầu độ phân giải |
Trong cột thứ hai, một chữ cái viết thường cho biết thư mục làm việc khác với chỉ mục như thế nào.
Thư | Nghĩa | Sự miêu tả |
---|---|---|
- | Mới/chưa biết | Không có trong chỉ mục, trong cây công việc |
tôi | Đã sửa đổi | Trong chỉ mục, trong cây công việc, đã sửa đổi |
d | Đã xóa | Trong chỉ mục, không phải trong cây công việc |
Xử lý lỗi 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 .
Lỗi repo: error: no branches ready for upload
xuất hiện khi lệnh repo start
không chạy khi bắt đầu phiên. Để khôi phục, bạn có thể kiểm tra ID cam kết, bắt đầu một nhánh mới và sau đó hợp nhất nó.