Để làm việc với mã Android, bạn cần có Git, một hệ thống quản lý phiên bản nguồn mở và Repo, một công cụ quản lý kho lưu trữ do Google xây dựng chạy trên Git. Để biết nội dung giải thích về 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ụ, hãy xem Công cụ kiểm soát nguồn.
Flow
Hoạt độ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. - Xác nhận các thay đổi bằ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ụ
Khi làm việc với Git và Repo trong kho lưu trữ mã Android, bạn cần thực hiện các tác vụ phổ biến sau.
| Lệnh | Mô tả |
|---|---|
repo init |
Khởi tạo 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 |
Giai đoạn xử lý tệp. |
git commit |
Xác nhận các tệp được dàn xếp. |
git branch |
Cho biết 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 |
Hiện sự khác biệt của các thay đổi chưa được dàn xếp. |
git diff --cached |
Hiện sự khác biệt của các thay đổi được dàn dựng. |
git log |
Hiện lịch sử của nhánh hiện tại. |
git log m/[codeline].. |
Hiện những cam kết chưa được đẩy. |
Để biết thông tin về cách sử dụng Repo để tải nguồn xuống, hãy xem phần Tải nguồn xuống và Tài liệu tham khảo về lệnh Repo.
Đồng bộ hoá ứng dụng
Cách đồng bộ hoá các tệp cho tất cả dự án hiện có:
repo sync
Cách đồng bộ hoá các tệp cho 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 cục bộ 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 trên 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; mà là một con trỏ đến một cam kết cụ thể, giúp việc tạo các nhánh cục bộ và chuyển đổi giữa các nhánh này trở thành 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 biệt một khía cạnh trong công việc của mình với những khía cạnh khác. Để xem 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 Repo, hãy chuyển đến dự án và chạy:
repo start BRANCH_NAME .
Dấu chấm ở cuối ( .) biểu thị dự án trong thư mục đang hoạt động.
Cách xác minh rằng nhánh mới đã được tạo:
repo status .
Sử dụng nhánh chủ đề
Cách chỉ định nhánh cho một dự án cụ thể:
repo start BRANCH_NAME PROJECT_NAME
Để xem danh sách tất cả các dự án, hãy tham khảo android.googlesource.com. Nếu bạn đã chuyển đến thư mục dự án, chỉ cần sử dụng dấu chấm để biểu thị 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 này đều trả về danh sách các nhánh hiện có, trong đó tên của nhánh hiện tại có dấu hoa thị (*) ở phía trước.
Tệp dàn dựng
Theo mặc định, Git sẽ nhận thấy 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 giữ lại các thay đổi, bạn phải đánh dấu hoặc giai đoạn những thay đổi đó để đưa vào một cam kết.
Cách dàn xếp các thay đổi:
git add
Lệnh này chấp nhận các đối số cho tệp hoặc thư mục trong thư mục dự án. Mặc dù có tên là git add, nhưng lệnh này không chỉ thêm tệp vào kho lưu trữ Git mà còn có thể dùng để dàn xếp các nội dung sửa đổi và xoá tệp.
Xem trạng thái của khách hàng
Cách liệt kê trạng thái của tệp:
repo status
Cách xem nội dung chỉnh sửa chưa được xác nhận (nội dung chỉnh sửa cục bộ không được đánh dấu để xác nhận):
repo diff
Để xem các nội dung chỉnh sửa đã cam kết (nội dung chỉnh sửa đượ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 bằng đối số cached:
cd ~/WORKING_DIRECTORY/PROJECTgit diff --cached
Xác nhận thay đổi
Cam kết là đơn vị cơ bản của chế độ kiểm soát phiên bản trong Git và bao gồm một bản 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 nhập 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 đến AOSP. Nếu bạn không thêm thông báo cam kết, thì cam kết 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 syncrepo upload
Các lệnh này trả về danh sách những thay đổi mà bạn đã xác nhận 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 lời nhắc y/n đơn giản.
Giải quyết xung đột đồng bộ hoá
Nếu lệnh repo sync trả về các 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 xung đột nếu cần.
- Thay đổi thành 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 đó điều chỉnh lại các thay đổi:
git add .git commitgit rebase --continue - Sau khi quá trình điều chỉnh cơ sở 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 ứng dụng
Sau khi hợp nhất các thay đổi vào Gerrit, hãy cập nhật thư mục làm việc cục bộ, sau đó sử dụng repo prune để xoá các nhánh chủ đề cũ một cách an toàn:
repo syncrepo prune
Xoá ứng dụng
Vì mọi thông tin về trạng thái đều được lưu trữ trong ứng dụng, nên bạn chỉ cần xoá thư mục khỏi hệ thống tệp:
rm -rf WORKING_DIRECTORY
Việc xoá một khách hàng sẽ xoá vĩnh viễn mọi thay đổi mà bạn chưa tải lên để xem xét.