Làm việc với mã Android yêu cầu sử dụng Git (hệ thống kiểm soát phiên bản mã nguồn mở) và Repo (công cụ quản lý kho lưu trữ do Google xây dựng chạy trên Git). Xem Công cụ kiểm soát nguồn để biết giải thích về mối quan hệ giữa Repo và Git và các liên kết đến tài liệu hỗ trợ cho từng công cụ.
lưu lượng
Phát triển Android bao gồm quy trình làm việc cơ bản sau:
- Bắt đầu một nhánh chủ đề mới bằng cách sử dụng
repo start
. - Chỉnh sửa các tệp.
- Thay đổi giai đoạn bằng cách sử dụng
git add
. - Cam kết các thay đổi bằng cách sử dụng
git commit
. - Tải các thay đổi lên máy chủ đánh giá bằng cách sử dụng
repo upload
.
Nhiệm vụ
Làm việc với Git và Repo trong kho mã Android liên quan đến việc thực hiện các tác vụ phổ biến sau đây.
Yêu cầu | Sự mô tả |
---|---|
repo init | Khởi tạo một khách hàng mới. |
repo sync | Đồng bộ hóa ứng dụng khách với kho lưu trữ. |
repo start | Bắt đầu một chi nhánh mới. |
repo status | Hiển thị trạng thái của chi nhánh hiện tại. |
repo upload | Tải các thay đổi lên máy chủ đánh giá. |
git add | Các giai đoạn của tệp. |
git commit | Cam kết các tệp theo giai đoạn. |
git branch | Hiển thị các chi nhánh hiện tại. |
git branch [branch] | Tạo một nhánh chủ đề mới. |
git checkout [branch] | Chuyển HEAD sang nhánh được chỉ định. |
git merge [branch] | Hợp nhất [branch] vào chi nhánh hiện tại. |
git diff | Hiển thị sự khác biệt của các thay đổi không theo giai đoạn. |
git diff --cached | Hiển thị sự khác biệt của các thay đổi theo giai đoạn. |
git log | Hiển thị lịch sử của chi nhánh hiện tại. |
git log m/[codeline].. | Hiển thị các cam kết không được đẩy. |
Để biết thông tin về cách sử dụng Repo để tải xuống nguồn, hãy xem Tải xuống Nguồn và Tham chiếu Lệnh Repo .
Đồng bộ hóa máy khách
Để đồng bộ hóa các tệp cho tất cả các dự án có sẵn:
repo sync
Để đồng bộ hóa các tệp cho các dự án đã chọn:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Tạo các nhánh chủ đề
Bắt đầu một nhánh chủ đề trong môi trường làm việc địa phương của bạn bất cứ khi nào bạn bắt đầu thay đổi, chẳng hạn như khi bạn bắt đầu làm việc với một lỗi hoặc tính năng mới. Nhánh chủ đề không phải là bản sao của các tệp gốc; nó là một con trỏ đến một cam kết cụ thể, giúp cho việc tạo các nhánh cục bộ và chuyển đổi giữa chúng là một hoạt động nhẹ. Bằng cách sử dụng các nhánh, bạn có thể tách biệt một khía cạnh công việc của mình với những khía cạnh khác. Để có một bài viết thú vị về cách sử dụng các nhánh chủ đề, hãy tham khảo Tách các nhánh chủ đề .
Để bắt đầu một nhánh chủ đề bằng cách sử dụng Repo, hãy điều hướng đến dự án và chạy:
repo start BRANCH_NAME .
Dấu chấm ( .
) Đại diện cho dự án trong thư mục làm việc hiện tại.
Để xác minh rằng chi nhánh mới đã được tạo:
repo status .
Sử dụng các nhánh chủ đề
Để chỉ định chi nhánh cho một dự án cụ thể:
repo start BRANCH_NAME PROJECT_NAME
Để biết danh sách tất cả các dự án, hãy tham khảo android.googlesource.com . Nếu bạn đã điều hướng đến thư mục dự án, chỉ cần sử dụng một dấu chấm để thể hiện dự án hiện tại.
Để chuyển sang một chi nhánh khác trong môi trường làm việc tại địa phương của bạn:
git checkout BRANCH_NAME
Để xem danh sách các chi nhánh hiện có:
git branch
hoặc
repo branches
Cả hai lệnh đều trả về danh sách các nhánh hiện có với tên của nhánh hiện tại được đặt trước bởi dấu hoa thị (*).
Tệp dàn dựng
Theo mặc định, Git thông báo nhưng không theo dõi những thay đổi mà bạn thực hiện trong một dự án. Để yêu cầu Git lưu giữ các thay đổi của bạn, bạn phải đánh dấu hoặc sắp xếp các thay đổi đó để đưa vào cam kết.
Đối với các thay đổi giai đoạn:
git add
Lệnh này chấp nhận các đối số cho các tệp hoặc thư mục trong thư mục dự án. Mặc dù có tên, git add
không chỉ thêm tệp vào kho lưu trữ Git; nó cũng có thể được sử dụng để chỉnh sửa và xóa tệp.
Xem trạng thái khách hàng
Để liệt kê trạng thái của tệp:
repo status
Để xem các chỉnh sửa chưa được cam kết (các chỉnh sửa cục bộ không được đánh dấu để cam kết):
repo diff
Để xem các chỉnh sửa đã cam kết (các chỉnh sửa định vị được đánh dấu cam kết), hãy đảm bảo rằng bạn đang ở trong thư mục dự án, sau đó chạy git diff
với đối số được cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Cam kết thay đổi
Cam kết là đơn vị cơ bản của kiểm soát sửa đổi trong Git và bao gồm ảnh chụp nhanh cấu trúc thư mục và nội dung tệp cho toàn bộ dự án. Sử dụng lệnh này để tạo một cam kết trong Git:
git commit
Khi được nhắc về một thông báo cam kết, hãy cung cấp một thông báo ngắn (nhưng hữu ích) về các thay đổi được gửi tới AOSP. Nếu bạn không thêm thông báo cam kết, cam kết không thành công.
Tải lên các thay đổi đối với Gerrit
Cập nhật lên bản sửa đổi mới nhất, sau đó tải lên thay đổi:
repo sync
repo upload
Các lệnh này trả về danh sách các thay đổi bạn đã cam kết và nhắc bạn chọn các nhánh để tải lên máy chủ xem xét. Nếu chỉ có một nhánh, bạn sẽ thấy một lời nhắc y/n
đơn giản.
Giải quyết xung đột đồng bộ hóa
Nếu lệnh repo sync
trả về xung đột đồng bộ hóa:
- Xem các tệp chưa được hợp nhất (mã trạng thái = U).
- Chỉnh sửa các khu vực xung đột nếu cần.
- Thay đổi thư mục dự án có liên quan. Thêm và xác nhận các tệp bị ảnh hưởng, sau đó căn cứ lại các thay đổi:
git add .
git commit
git rebase --continue
- Sau khi rebase hoàn tất, hãy bắt đầu lại toàn bộ quá trình đồng bộ hóa:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Dọn dẹp khách hàng
Sau khi hợp nhất các thay đổi đối với Gerrit, hãy cập nhật thư mục làm việc cục bộ của bạn, sau đó sử dụng repo prune
để loại bỏ các nhánh chủ đề cũ một cách an toàn:
repo sync
repo prune
Xóa khách hàng
Bởi vì tất cả thông tin trạng thái được lưu trữ trong máy khách của bạn, bạn chỉ cần xóa thư mục khỏi hệ thống tệp của mình:
rm -rf WORKING_DIRECTORY
Xóa ứng dụng khách sẽ xóa vĩnh viễn mọi thay đổi bạn chưa tải lên để xem xét.