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