2013-10-09 14 views

Trả lời

40

Các câu trả lời khác không thực sự trả lời câu hỏi, đó là: tại sao Git và Mercurial không làm việc giống nhau? Có sự khác biệt về triết học?

Trong Mercurial, pull là đối diện của push: nó đồng bộ hóa repo cục bộ với repo từ xa mà không cần chạm vào bản sao làm việc. Vì vậy, nó phù hợp hơn.

Trong Git, pullfetch cộng với merge hoặc pull cộng với update trong điều khoản Mercurial. Thông thường đây là những gì bạn muốn. Vì vậy, nó hiệu quả hơn.

Distributed Version Control University talk có trang trình bày tại 4-minute mark thể hiện rõ cách Mercurial hoạt động. Michael Ernst của Version control concepts and best practices có một sơ đồ tương tự (bao gồm dưới đây):

Distributed version control

17

git pull thực hiện nội bộ git fetchgit merge, trong khi hg pull chỉ làm những gì git fetch. Chỉ cần thực hiện hg pull -u. Xem thêm điều này command equivalence table.

+0

Có sự khác biệt về lý thuyết (như một sự khác biệt trong cách tiếp cận) bên dưới rằng hoặc là nó chỉ là một sự khác biệt từ vựng? –

+2

Từ vựng nghiêm túc. Git lấy và kéo mercurial làm điều tương tự. Mercurial fetch và git pull cũng làm như vậy. –

+0

@Alex Nó phụ thuộc vào ý chính xác của bạn bằng cách "tiếp cận", và mức độ bạn nhìn vào. 'hg pull' bằng' git fetch' ở bất kỳ mức nào mà người dùng bình thường nên quan tâm. Nhưng tất nhiên Mercurial và Git sử dụng các cấu trúc dữ liệu khác nhau trong nội bộ, do đó, tại một số điểm có sự khác biệt về mặt kỹ thuật trong các chi tiết thực hiện. Nếu bạn thực sự quan tâm sâu sắc về nó, chỉ cần so sánh tài liệu cho [hg pull] (http://www.selenic.com/mercurial/hg.1.html#pull) và [git fetch] (http: // git- scm.com/docs/git-fetch.html). Các từ ngữ Git là kỹ thuật và tiết, nhưng cuối cùng nó là như nhau. – sschuberth

2

Để có được chức năng git tương đương cho phép tìm nạp phần mở rộng Mercurial (đi kèm với bản phân phối Mercurial), xem fetch extension. Nó sẽ thực hiện một hg pull -u.

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