2013-02-21 25 views
5

Thực hiện một số công việc trong hạt nhân Android. Tôi rất quen thuộc với git, nhưng không quen thuộc với repo, vì vậy tôi đọc tài liệu sau: http://source.android.com/source/version-control.html. Theo hiểu biết của tôi, cũng như thử nghiệm xung quanh với các nhánh chủ đề, repo start BRANCH_NAME cũng giống như git checkout -b BRANCH_NAME. Tôi có đúng trong sự hiểu biết của tôi, hoặc có một số chi tiết quan trọng, tinh tế mà tôi đang thiếu?Sự khác biệt giữa khởi động repo và git checkout -b

Trả lời

2

Nhìn vào start.py source code để khởi repo, tôi tin rằng sự khác biệt chính là trong việc quản lý các manifest files được bao gồm trong các dự án Android.

bắt đầu một nhánh phát triển mới, bắt đầu từ sửa đổi được chỉ định trong tệp kê khai.


Để thêm vào Trevor Johns 'answer, bạn cần phải kiểm tra "How do you make an existing Git branch track a remote branch?" (khi bạn không sử dụng repo start):

git checkout -b newBranch -t aosp/master 

đó sẽ thiết lập từ xa và sáp nhập (-t = "track "" trong cấu hình được kết hợp với nhánh mới.

Một đơn giản git checkout -b sẽ không đặt bất cứ điều gì, và tạo ra một chi nhánh hoàn toàn địa phương (không theo dõi bất kỳ chi nhánh thượng nguồn đến một repo từ xa)

+0

Cảm ơn đã phản ứng, VonC, I figured nước đã xảy ra là thứ gì đó khác biệt giữa 2. –

4

Sự khác biệt là repo start đặt remotemerge thuộc tính cho chi nhánh của bạn bên trong .git/config:

[branch "YOUR_BRANCH_HERE"] 
    remote = aosp 
    merge = master 

nếu không có những, repo sẽ không biết làm thế nào để tải chính xác thay đổi của bạn khi bạn chạy repo upload sau, và nó sẽ hoạt động như thể chi nhánh mới của bạn chỉ đơn giản là không tồn tại.

(Ngoài ra còn có một số logic trong đó cho phép bạn tạo các chi nhánh mới cho mỗi dự án trong repo đồng thời với --all, nhưng đó chỉ là một điều thuận tiện.)

Các vấn đề liên quan