2010-07-27 40 views
32

Tôi đang cố gắng hiểu rõ hơn về git.Đầu ra của git pull thực sự có ý nghĩa gì?

Ai đó có thể cho tôi một giải thích từng dòng đơn giản về ý nghĩa của kết quả git pull cơ bản nào? Ví dụ:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 
Unpacking objects: 100% (7/7), done. 
From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 
Updating 9d447d2..f74fb21 
Fast forward 
app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

Trả lời

51

Dưới mui xe, git pull được git fetch Tiếp theo git merge. Đây là phần tìm nạp:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 

Lúc này, bạn đã nói với điều bạn muốn từ xa. Nó tìm thấy tất cả các đối tượng cần cung cấp cho bạn (đếm chúng trong quá trình, tôi tin), nén chúng để truyền nhanh hơn qua mạng, và sau đó báo cáo những gì nó gửi cho bạn. Đối tượng có thể là các đốm màu, cây cối, cam kết hoặc thẻ - xem ví dụ: git book để biết thêm thông tin.

Unpacking objects: 100% (7/7), done. 

Bạn nhận được gói (bộ đối tượng nén) và giải nén gói.

From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 

Bạn đã tìm nhánh 'chi nhánh' từ điều khiển đã cho; ref FETCH_HEAD hiện trỏ đến nó. Bây giờ chúng ta chuyển sang hợp nhất - chính xác, git sẽ hợp nhất FETCH_HEAD (nhánh chủ của từ xa) vào nhánh hiện tại của bạn (có lẽ là chủ).

Updating 9d447d2..f74fb21 
Fast forward 

Nó chỉ ra rằng bạn chưa tách ra khỏi nhánh chính của từ xa, do đó hợp nhất là tua đi nhanh (một kết hợp tầm thường nơi nó đơn giản di chuyển bạn về phía trước trong lịch sử). Git lưu ý vị trí ban đầu của nhánh master của bạn (9d447d2) và vị trí mới (f74fb21) nó được chuyển tiếp nhanh tới. Nếu bạn đã tách ra khỏi nhánh chính của từ xa, bạn sẽ thấy đầu ra của một phép hợp nhất đệ quy ở đây - Merge made by recursive, có thể cùng với một số xung đột hợp nhất Auto-merged <file> và (oh no!)!

app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

Cuối cùng, nó cho bạn thấy sự khác biệt giữa vị trí ban đầu và sau hợp nhất của nhánh chính; đây là cơ bản những gì bạn sẽ nhận được từ git diff --stat [email protected]{1} master.

+0

+1 "Hóa ra là bạn chưa phân tách khỏi nhánh chính của từ xa" - nghĩa là không có nhánh mới nào được tạo ra? Ngoài ra, ++ hoặc - có nghĩa là –

+1

@Pangea và những người khác có thể tự hỏi trong tương lai: Không có nghĩa là không có chi nhánh mới nào được tạo ra, điều đó có nghĩa là bạn không đồng thời cam kết những thay đổi không chưa được bao gồm trong nhánh từ xa. Trong trường hợp này, không có gì để hợp nhất, bạn chỉ cần thêm các cam kết mới trên đầu nhánh địa phương của bạn và cả nhánh địa phương của bạn và nhánh từ xa sẽ giống hệt nhau. ++ và - chỉ đơn giản là "đồ họa" đại diện của số lượng thay đổi trong mỗi tập tin (+ đang được insertions và đang được xóa) và do đó cho bạn biết gần như nơi mà hầu hết các thay đổi đã đi đến. – tne

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