Tại sao Mercurial được coi là dễ dàng hơn Git?


204

Khi nhìn vào các so sánh, đối với tôi, dường như có thể có ánh xạ 1: 1 giữa các bộ tính năng của chúng. Tuy nhiên, một tuyên bố thường được trích dẫn là "Mercurial dễ dàng hơn". Cơ sở của tuyên bố này là gì? (nếu có)


21
Thật kỳ lạ, tôi chưa bao giờ nghe Mercurial dễ dàng hơn. Tôi tìm thấy nhiều tài liệu hơn cho Git (có thể đã được nhận thức) vì vậy tôi đã học được điều đó.
Nic

16
Bởi vì nó được tạo ra bởi Linus?
Công việc

124
Đi vào lãnh thổ chiến tranh thần thánh ở đây, nhưng tôi thấy Mercurial dễ sử dụng hơn Git bởi vì, là một người dùng Windows, tôi cảm thấy được Mercurial chào đón, và bị Git đối xử như một kẻ lập dị và thua cuộc. Tôi biết tôi đang nhân hóa phần mềm và tôi biết rằng cả hai đều hoàn toàn có khả năng sử dụng tốt trong Windows, nhưng đó là ấn tượng của hai người họ.
Carson63000


11
Tôi tự hỏi có bao nhiêu người sẽ sử dụng Git nếu Github không tồn tại hoặc không có nhiều dự án cao cấp trên đó?
Chris S

Câu trả lời:


240

Case in point: Hãy nói rằng bạn muốn thay đổi tên người dùng trên tất cả các cam kết trước đó của bạn. Tôi cần phải làm điều này nhiều lần vì nhiều lý do.

Phiên bản Git

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
        then
                GIT_COMMITTER_NAME="<New Name>";
                GIT_AUTHOR_NAME="<New Name>";
                GIT_COMMITTER_EMAIL="<New Email>";
                GIT_AUTHOR_EMAIL="<New Email>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

Phiên bản Mercurial:

tập tin tác giả.convert.list:

<oldname>=<newname>

Dòng lệnh:

hg convert --authors authors.convert.list SOURCE DEST

Bây giờ, cái nào trông dễ sử dụng hơn?


Lưu ý: Tôi đã dành 2 năm chỉ làm việc với Git, vì vậy đây không phải là câu nói "Tôi ghét nó, tôi đã không nhận được nó trong 2 giây".

Đối với tôi, đó là khả năng sử dụng. Git rất định hướng linux với cách làm linux. Điều đó có nghĩa là dòng lệnh, trang người đàn ông và tự mình tìm ra nó. Nó có một GUI rất kém (lưu ý: Tôi dựa trên msysGit từ khoảng một năm trước), điều đó dường như chỉ cản trở tôi. Tôi chỉ có thể sử dụng nó

Dòng lệnh tệ hơn. Là một chương trình định hướng Linux, trên Windows rất khó sử dụng. Thay vì một cổng bản địa, họ chỉ đơn giản là git với MinGW (Think cygwin), khiến việc làm việc với nó trở nên khó khăn hơn nhiều. MinGW không phải là Windows Command Prompt và chỉ hoạt động khác nhau. Thật điên rồ khi đây là cách duy nhất để làm việc với Git. Ngay cả trong Linux, dường như cách duy nhất là làm việc với dòng lệnh thẳng. Các dự án như RabbitVCS đã giúp một số, nhưng không mạnh mẽ lắm.

Cách tiếp cận hướng dòng lệnh và là một chương trình linux có nghĩa là hầu hết tất cả các hướng dẫn cách làm, tài liệu trợ giúp và các câu hỏi diễn đàn / QA đều dựa vào việc chạy các lệnh quái dị như trên. Các lệnh SCM cơ bản (cam kết, kéo, đẩy) không phức tạp, nhưng bất kỳ sự phức tạp nào cũng tăng theo cấp số nhân.

Tôi cũng ghét một nơi mà rất nhiều người dùng OSS git dường như quanh quẩn: Github. Khi bạn lần đầu tiên vào một trang github, nó sẽ đánh sập bạn với mọi thứ bạn có thể làm. Đối với tôi, một trang git dự án trông hỗn loạn, đáng sợ và quá mạnh mẽ. Ngay cả lời giải thích về những gì dự án là, được đẩy xuống dưới cùng. Github thực sự gây tổn thương cho những người chưa thiết lập trang web đầy đủ. Theo dõi vấn đề của nó cũng là khủng khiếp và khó hiểu. Tính năng quá tải.

Người dùng Git dường như cũng rất sùng bái. Người dùng Git dường như luôn là những người bắt đầu "thánh chiến" về việc DVCS nào tốt hơn, sau đó buộc người dùng Mercurial phải tự vệ. Các trang web như http://whygitisbetterthanx.com/ thể hiện sự kiêu ngạo và tâm lý gần như "Sử dụng phần mềm của tôi hoặc chết". Nhiều lần tôi đã đi đến nhiều nơi giúp đỡ chỉ để được biết đến vì không biết X, sử dụng X trước, sử dụng Windows, v.v. Thật điên rồ.


Mặt khác, Mercurial dường như đi theo hướng tiếp cận tử tế hơn. Trang chủ của riêng họ có vẻ thân thiện hơn với người dùng mới so với Git . Trong một tìm kiếm đơn giản của Google, kết quả thứ 5 là TortoiseHg, một GUI rất đẹp cho Mercurial. Toàn bộ cách tiếp cận của họ dường như là sự đơn giản trước, sức mạnh sau.

Với Mercurial tôi không có SSH vô nghĩa (SSH là địa ngục trên Windows), tôi không có các lệnh phức tạp ngu ngốc, tôi không có người dùng sùng bái, tôi không có sự điên rồ. Mercurial chỉ hoạt động.

TortoiseHg cung cấp một giao diện thực sự có thể sử dụng được (mặc dù gần đây nó dường như đang phát triển) cung cấp các tính năng thực sự hữu ích. Các tùy chọn được giới hạn ở những gì bạn cần, loại bỏ sự lộn xộn và các tùy chọn hiếm khi được sử dụng. Nó cũng cung cấp nhiều mặc định tốt

Mercurial, rất thân thiện với những người mới đến, rất dễ nhận. Ngay cả một số chủ đề phức tạp hơn như mô hình phân nhánh khác nhau và chỉnh sửa lịch sử cũng rất dễ theo dõi. Tôi nhặt Mercurial nhanh chóng và không đau đớn.

Mercurial cũng chỉ hoạt động lần đầu tiên với ít thiết lập. Trên BẤT K OS hệ điều hành nào, tôi chỉ có thể cài đặt TortoiseHg và nhận tất cả các tính năng tôi muốn (chủ yếu là các lệnh trình đơn ngữ cảnh) mà không cần phải tìm kiếm các Guis khác nhau. Cũng thiếu là thiết lập SSH (một nửa trong số các hướng dẫn ngoài kia nói rằng hãy sử dụng Putty, Plink và Pagent trong khi nửa còn lại nói sử dụng ssh-keygen). Đối với người dùng mới, TortoiseHg mất vài phút để thiết lập trong khi Git mất 30 phút đến một giờ với rất nhiều thông tin.

Cuối cùng, bạn có repos trực tuyến. Tương đương với Github là BitBucket, có một số vấn đề tôi đã nêu ở trên. Tuy nhiên, cũng có Google Code. Khi tôi đi đến một dự án Google Code , tôi không bị quá tải tính năng, tôi có một giao diện sạch đẹp. Google Code giống như một kết hợp repo / trang web trực tuyến, điều này thực sự giúp các dự án OSS không có thiết lập trang web hiện có. Tôi sẽ cảm thấy rất thoải mái khi sử dụng Google Code làm trang web dự án của mình trong một thời gian khá dài, chỉ xây dựng một trang web khi thực sự cần thiết. Trình theo dõi vấn đề của nó cũng rất mạnh mẽ, phù hợp độc đáo giữa Trình theo dõi vấn đề gần như vô dụng của Github và sự quái dị của Bugzilla .

Mercurial chỉ hoạt động, lần đầu tiên, mọi lúc. Git cản đường tôi và chỉ khiến tôi tức giận hơn khi sử dụng nó.


6
Bình luận viên : ý kiến ​​có nghĩa là để tìm kiếm làm rõ, không phải để thảo luận mở rộng. Nếu bạn có một giải pháp, hãy để lại một câu trả lời. Nếu giải pháp của bạn đã được đăng, xin vui lòng nâng cấp nó. Nếu bạn muốn thảo luận câu hỏi này với người khác, vui lòng sử dụng trò chuyện . Xem FAQ để biết thêm thông tin.

1
IntelliJ IDEA và Xcode 4 có khả năng tích hợp tuyệt vời với Git trên các nền tảng tương ứng của họ và cho các nhiệm vụ hàng ngày, bạn không bao giờ phải sử dụng dòng lệnh.

4
Tôi muốn thêm rằng tortGGIT bây giờ tốt hơn rất nhiều khi bạn muốn sử dụng GIT trên windows. Bạn vẫn phải xử lý các khóa SSL và quá trình cài đặt không được suôn sẻ, nhưng khi thực hiện nó sẽ hoạt động dễ dàng.
Arkh

2
Tiện ích mở rộng Git Cá nhân tôi thấy dễ dàng điều hướng và làm việc hơn so với TortoiseHG trên windows và tôi chỉ sử dụng 1 dòng lệnh với git.
KallDrexx

1
Tôi bị bối rối bởi dòng này: "MinGW không phải là Windows Command Prompt, và chỉ hành động khác. Thật điên rồ khi đây là cách duy nhất để làm việc với Git." Tôi sử dụng cài đặt msysgit và tùy chọn 2, để chạy từ dòng lệnh Windows. Nó hoạt động tốt. Có một vài thứ không hoạt động (như dấu mũ, ký tự tiếp tục dòng trong DOS) nhưng có những thứ thay thế cho những thứ đó (như dấu ngã) hoạt động tốt. Tôi không phải là người đam mê dòng lệnh (hoặc ít nhất là trước khi tôi bắt đầu học Git) nhưng sử dụng Git với dòng lệnh thực sự dễ dàng. Tui bỏ lỡ điều gì vậy?
Kyralessa

80

Git so với Mercurial

Mercurial thường được cho là đơn giản và dễ học hơn Git. Đổi lại, thường có nhận thức rằng Git linh hoạt và mạnh mẽ hơn. Điều này một phần là do Git có xu hướng cung cấp nhiều lệnh cấp thấp hơn, nhưng cũng một phần vì Mercurial mặc định có xu hướng ẩn các tính năng nâng cao , để người dùng chỉnh sửa tệp cấu hình đồng bóng để kích hoạt các tính năng nâng cao mà họ thích. Điều này thường dẫn đến nhận thức rằng các tính năng nâng cao không có sẵn trong Mercurial.

Khái niệm Git

Mercurial luôn tập trung nhiều hơn vào các khía cạnh giao diện, điều này làm cho nó ban đầu dễ học hơn. So với Git, cần có sự hiểu biết nông hơn để hoạt động với Mercurial một cách hữu ích. Về lâu dài, việc đóng gói như vậy đã mang lại cho Mercurial vẻ ngoài giả tạo là kém mạnh mẽ và đặc trưng hơn so với thực tế.


73
Vì vậy, Mercurial ẩn chỉ các chức năng tiên tiến, trong khi GIT ẩn tất cả các chức năng ... ;-)
kinh ngạc

4
Git không có nhiều quyền lực hơn. Ví dụ, không có tương đương với CHÍNH của git ~ 1 . Mercurial có p (x) trải dài trên các nhánh, thật vô dụng. Không có giai đoạn trong Hg. Tất cả các chi nhánh phải được đẩy khi bạn đẩy. Mercurial không linh hoạt, thậm chí với tất cả các plugin như histedit, shelf và rebase. Dòng lệnh của Git cũng tốt hơn, nó cung cấp cho người dùng gợi ý, đồng bóng không. Tôi buộc phải sử dụng DVCS bị tê liệt nhẹ này tại nơi làm việc và tôi đã rơi vào tình huống mà người đồng bóng thiếu sức mạnh để làm những gì tôi muốn.
Keyo

22
@Keyo: Mercurial có ~, xem revsets . Nó không có khu vực tổ chức, nhưng bạn có thể mô phỏng nó bằng MQ, mạnh hơn rất nhiều. Học cách sử dụng công cụ thay vì bám vào những gì bạn biết từ git, nó sẽ được đền đáp.
Idan K

22
@Keyo: Bạn không cần phải đẩy tất cả các chi nhánh bằng Mercurial khi bạn đẩy. Bạn có thể đẩy một nhánh cụ thể ( hg push --branch BRANCH) hoặc lên tới một phiên bản cụ thể ( hg push --rev REV). Xin vui lòng xem hg help pushđể có thêm lựa chọn.
Nhiếp chính

1
FYI, người ta có thể có được một tập hợp con đáng kể của khu vực tổ chức bằng cách sử dụng phần mở rộng hồ sơ . OTOH, tôi nghĩ rằng phần mở rộng giá đỡ (được mô phỏng theo lệnh "kệ" từ Baazar, và gần với "git stash") phục vụ tốt hơn hầu hết các mục đích sử dụng khu vực tổ chức.
brandizzi

47

Bối cảnh: Tôi sử dụng cả Mercurial (cho công việc) và Git (cho các dự án phụ và nguồn mở) hàng ngày. Tôi chủ yếu sử dụng các công cụ dựa trên văn bản với cả hai (không phải IDE) và tôi đang dùng Mac.

Nói chung, tôi thấy Mercurial dễ làm việc hơn. Một vài điều mà tôi thấy làm cho Mercurial dễ dàng hơn:

  1. Thiếu chỉ số. Chỉ mục là một công cụ mạnh mẽ cho phép nhiều tính năng của Git nhưng nó cũng là một lớp bổ sung thêm một bước vào nhiều việc tôi làm thường xuyên. Quy trình làm việc của Mercurial tương tự như svn.
  2. Số sửa đổi thay vì shas. Đây là một điều nhỏ mà tôi thấy làm cho công việc hàng ngày trở nên dễ dàng hơn rất nhiều trong Mercurial. Cách dễ dàng hơn để đẩy một vài số sửa đổi vào đầu của bạn trong quá trình rebase, hợp nhất, v.v. trong khi viết lệnh hơn là thực hiện tương tự với các shas thậm chí rút ngắn.
  3. Chi nhánh. Cách tiếp cận của Git với các chi nhánh bằng cách đặt tên cho các cam kết là mạnh mẽ và khác biệt đáng kể so với các hệ thống kiểm soát phiên bản khác. Nó làm cho một số điều dễ dàng hơn rất nhiều. Tôi thấy rằng cách tiếp cận của Mercurial phù hợp với suy nghĩ của svn tốt hơn một chút và giúp dễ hiểu trực quan hơn về lịch sử chi nhánh. Đây có thể chỉ là một sở thích.

6
+1 để đề cập đến chỉ số; Tôi nghĩ rằng chỉ số và các tương tác của nó là những điều mà làm cho git khó khăn hơn để tìm hiểu hơn lanh lợi.
Sean McMillan

18
Các nhánh hgtương đương gitđược gọi là thực sự bookmarks. Theo tôi biết, hgcác chi nhánh không có tương đương git.
Hank Gay

6
Tôi cũng ở trong hoàn cảnh tương tự, với sự lanh lợi trong công việc và git ở nhà. Chi nhánh Mercurial khá khó chịu với tôi, tôi thích có các chi nhánh riêng và đẩy chúng khi tôi thích. Mercurial buộc tôi phải sử dụng kệ hoặc repos bổ sung. Số sửa đổi là ngớ ngẩn, cho tôi băm. Sân khấu là tuyệt vời trong git, tôi bỏ lỡ điều này. Tôi thực sự đang thiếu sức mạnh của git. Tôi đã làm xung quanh một vài điều với một số bổ sung nhưng việc phân nhánh thực sự làm tôi khó chịu.
Keyo

6
@Keyo - Theo kinh nghiệm của tôi, gitphân nhánh là một tập hợp con của hgphân nhánh. Trong hgbạn có thể có cả hai nhánh được đặt tên và không được đặt tên (tôpô) và thậm chí có thể quản lý các nhánh không được đặt tên theo cùng một cách như gitsử dụng dấu trang. Tôi chưa bao giờ thực sự nhìn thấy điểm trong khu vực tổ chức. Tôi muốn thay đổi các thay đổi không mong muốn và sau đó đảm bảo rằng mã của tôi biên dịch và hoàn thành các thử nghiệm của tôi trước khi thực hiện. Sau đó tôi có thể bỏ kệ và tiếp tục. Ngoài ra, "Massaging Hunks" của Charles Bailey (p90 +) làm tôi sợ * 8 '): accu.org/content/conf2011/accu2011LT_fri_share_v2.pdf
Đánh dấu gian hàng

7
@Keyo: Trong Mercurial, các nhánh riêng được gọi là 'bookmark': cập nhật lên bản sửa đổi gốc , sau đó hg bookmark keyo-stufflàm mọi thứ hg commit, sau đó hg push -B keyo-stuff. Nếu bạn không thích số sửa đổi, đừng sử dụng chúng; Mercurial sẽ chấp nhận băm bất cứ nơi nào nó sẽ chấp nhận số sửa đổi, tôi nghĩ vậy. Tôi phải nói rằng, những bình luận của bạn đánh bại Mercurial vì thiếu tính năng mà thực tế nó đã xuất hiện là không biết gì và hơi hung hăng; bạn không làm được gì nhiều cho khuôn mẫu của người dùng Git!
Tom Anderson

29

Điều này rất chủ quan và phụ thuộc từ người này sang người khác, nhưng vâng, tôi sẽ chuyển nó cho một người hoàn toàn mới đối với VCS hoặc ai đó đến từ một trong những VCS "trường học cũ", Mercurial sẽ có vẻ dễ dàng hơn.

Ví dụ, thêm tệp, sự không tồn tại của chỉ mục trong Hg, dễ dàng quay lại một số sửa đổi cũ và phân nhánh từ đó (chỉ cần cập nhật và cam kết) như một số ví dụ "rõ ràng" nhất. Bây giờ hầu hết các tính năng của một hệ thống có thể được mô phỏng theo hệ thống khác và ngược lại, nhưng điều đó đòi hỏi một số kiến ​​thức về Git, trong khi ở Mercurial, mặc định (nếu bạn cho phép tôi gọi chúng là) khá "thân thiện với người dùng". Những điều nhỏ nhặt đó - công tắc ở đây và kia, hành vi không rõ ràng trong một lệnh và cứ thế ... những thứ này cộng lại, và cuối cùng, một hệ thống có vẻ dễ sử dụng hơn hệ thống kia.

Chỉ để làm cho câu trả lời đầy đủ; Tôi sử dụng git, nhưng khi giới thiệu một VCS cho ai đó "mới đối với họ", tôi hầu như luôn khuyên dùng Mercurial. Tôi nhớ, khi nó lần đầu tiên vào tay tôi, nó cảm thấy rất trực quan. Theo kinh nghiệm của tôi, Mercurial tạo ra ít wtf / phút hơn Git.


+1 cho "ít wtf / phút" -1 cho "điều này rất chủ quan". Nó không chủ quan lắm ... Tôi không biết tại sao mọi người vẫn nghĩ sự khác biệt của UI là chủ quan. Nếu tôi thực hiện các lệnh băm và md5, bạn sẽ không đưa ra lập luận rằng một số người có thể tìm thấy băm md5 trực quan hơn so với ban đầu, phải không? (Tôi hy vọng là không). Điều tương tự cũng đúng với Git. Git chỉ dễ dàng hơn so với đồng bóng nếu kinh nghiệm của bạn với git đáng kể hơn đáng kể so với đồng bóng.
weberc2

17

Tôi nghĩ nó đơn giản như thế này: Mercurial có một cú pháp quen thuộc hơn (đặc biệt đối với người dùng SVN) và được ghi lại khá tốt. Khi bạn đã quen với cú pháp Git, bạn sẽ thấy nó dễ sử dụng như mọi thứ khác.


7
Không. Có quá nhiều bước quy trình làm việc để bạn gọi nó chỉ là "cú pháp khác nhau". Bạn phải hiểu mô hình cơ bản mà bạn đang thao tác và tất cả trạng thái của chỉ số git, để sử dụng Git. Nói SQL và Pascal là hai cú pháp khác nhau cho cùng một điều sẽ sai như nhau. Git là một hệ thống phiên bản nội dung hệ thống tệp với các tính năng DVCS. Mercurial là một DVCS không thực hiện mọi thao tác GIT phiên bản nội dung hệ thống tệp, chỉ có tập hợp con mà tất cả người dùng DVCS yêu cầu.
Warren P

9

Nhận thức có thể thay đổi theo thời gian, về điều này. Mercurial được thiết kế rất tốt, và Git cũng vậy. Mercurial dường như dễ học hơn (ít nhất là đối với tôi), và đã có những khó khăn mà tôi gặp phải trong Git, rằng tôi không có song song với Mercurial. Tôi đã cố gắng học Python và Ruby và ngày càng nhanh hơn với Python. Điều đó không có nghĩa là Python luôn luôn và ở mọi nơi tốt hơn Ruby, hoặc thậm chí nó tốt hơn cho tôi. Đó chỉ là những gì tôi học được và bị mắc kẹt. Các lập trình viên thường thực hiện các cuộc chiến thần thánh ngoài sở thích cá nhân. Những người khác cũng làm điều đó.

Tôi là một người dùng đồng bóng, người cố gắng giữ quan điểm cởi mở về Git và tôi tự do thừa nhận rằng nó không "trở thành thứ yêu thích mới của tôi" ở cùng mức độ với Mercurial. Tôi nghĩ rằng Git thực sự thực sự tốt đẹp mặc dù.

Một ví dụ ngược lại cho độ phức tạp của GIT / đồng bóng: Hỗ trợ GIT đẹp được tích hợp vào XCode, trên Mac. XCode ít dễ sử dụng hơn với Mercurial so với GIT.

Kinh nghiệm của tôi với GIT cho đến nay là tôi bị lẫn lộn và bị mất và cần phải tham khảo tài liệu nhiều hơn trong khi sử dụng nó. Tôi tin rằng rất nhiều tài liệu đã được viết, nhưng không có gì cho phép tôi "mò mẫm" nó. Thứ hai, tôi có thể sửa đổi và mở rộng Mercurial một cách dễ dàng trong Python và khi tôi thành thạo Python và vì bất kỳ ai thực sự có thể học được python một cách nhanh chóng, nó có vẻ là một lợi thế đối với tôi. Tôi cũng biết C và viết các phần mở rộng Python trong C, vì vậy tôi cho rằng một ngày nào đó, nếu tôi cần, tôi có thể dễ dàng viết một phần mở rộng Git bằng C.

Dễ sử dụng không phải là một cái gì đó dễ dàng để định lượng. Nó ở đó, và tôi không nghĩ nó hoàn toàn chủ quan, nhưng chúng ta không có kỹ thuật đo lường khách quan tốt. Các đơn vị để dễ sử dụng là gì? Milli-iPod?

Tôi không quá đảng phái đến mức ủng hộ 100% và chống git 100%. Tôi cảm thấy thoải mái hơn trên Mercurial ngay bây giờ, trên Windows và Linux và khi tôi bắt đầu làm nhiều công việc Mac hơn, tôi hy vọng rằng tôi sẽ cố gắng gắn bó với XCode + GIT.

Cập nhật 2013: Bây giờ tôi đã sử dụng Mercurial VÀ GIT đủ lâu để tìm thấy một số tính năng mà tôi muốn nó có Git, chẳng hạn như câu hỏi này về các chiến lược hợp nhất. Thực sự Git là tuyệt vời, nếu khó học, và đôi khi phức tạp điên cuồng.


7

Có một vài điều mà IMO có khả năng đưa người dùng mới ra khỏi Git:

  1. Văn hóa Git là trung tâm dòng lệnh nhiều hơn. Mặc dù cả hai công cụ thường có xu hướng tập trung quá nhiều vào dòng lệnh (như tôi đã nói nhiều lần, các hướng dẫn dòng lệnh có thể mạnh mẽ và trôi chảy hơn, nhưng chúng không phải là một chiến lược tiếp thị tốt ), điều này hoàn toàn đúng với Git. Trong khi Mercurial có một công cụ GUI tiêu chuẩn thực tế trong TortoiseHg, thậm chí là tùy chọn tải xuống mặc định cho người dùng Windows trên trang chủ Mercurial, Git có một số giao diện GUI cạnh tranh (TortoiseGit, Git Tiện ích mở rộng, gitk, v.v.) không được quảng cáo tốt trên trang web Git, và tất cả đều là một đôi mắt hoàn chỉnh. (Văn bản màu đen trên nhãn màu đỏ? C'mon, TortoiseGit, bạn có thể làm tốt hơn thế!) Ngoài ra còn có một thái độ phổ biến hơn nhiều trong cộng đồng Git rằng những người sử dụng công cụ GUI không phải là nhà phát triển phần mềm thích hợp.

  2. Git có một số mặc định vượt trội có ý nghĩa hoàn hảo đối với người dùng cao cấp, nhưng có thể gây ngạc nhiên nếu không khiến người dùng mới sợ hãi. Ví dụ, việc tự động hóa các tác vụ như hợp nhất sẽ mạnh hơn nhiều (ví dụ: git pull sẽ tự động hợp nhất và cam kết khi có thể). Có một trường hợp cho việc hợp nhất hoàn toàn tự động , nhưng hầu hết người dùng thiếu kinh nghiệm đều sợ việc sáp nhập và cần có cơ hội để có được niềm tin vào các công cụ của họ trước khi giải phóng toàn bộ sức mạnh của họ về mã nguồn.

  3. Tài liệu và sự phức tạp vốn có:

    $ hg help log | wc -l
    64
    $ git help log | wc -l
    912
    

3
Trên thực tế, tôi thích một trợ giúp dài 912 dòng với trợ giúp là 64.
Dysaster

10
Trên thực tế, tôi thích một giao diện người dùng trực quan và liền mạch đến mức bạn không cần trợ giúp ngay từ đầu.
jammycakes

2
Tôi muốn cả GUI và trợ giúp. :) Những gì có vẻ trực quan với tôi là một mớ hỗn độn cho người khác.
Dysaster

1
Chắc chắn, nhưng khi sự giúp đỡ là cần thiết, nó sẽ dễ dàng để làm theo.
jammycakes

3
Tôi đã nghĩ về một sự tương tự mới; Git giống như C ++ (xin lỗi Linus!) Và Mercurial giống như Pascal. Điều gì là ẩn và chỉ có thể được thực hiện một cách trong Pascal (hoặc Mercurial) có thể được thực hiện một cách rõ ràng, mười chín cách khác nhau trong C ++ (và Git). Một số người thích powertools với nhiều nút và đòn bẩy hơn, và Git là vậy.
Warren P

3

Một điều tôi có thể nghĩ là

git add .
git commit -am "message"

so với

hg ci -Am "message"

git commit -akhông thêm các tệp mới được tạo hg ci -A, điều đó có nghĩa là một cái gì đó yêu cầu hai lệnh với git có thể được thực hiện bằng một lệnh trong Mercurial. Sau đó, một lần nữa, "ít gõ" không nhất thiết có nghĩa là "thân thiện với người dùng hơn".


11
Tôi thường thấy rằng trong quy trình làm việc của mình, việc tự động thêm các tệp mới thực sự là không mong muốn. Tôi đã đến để thích cách git commit -ahoạt động đơn giản vì nó giúp dễ dàng kiểm soát những gì không và không được thêm vào cho một cam kết nhất định. (Nó thực sự không bình thường đối với tôi để xác định tên đường dẫn riêng cho mỗi svn ciđể tránh thêm các tài liệu liên quan đến một cam kết.)
greyfade

3
Đủ công bằng, nhưng tôi tin rằng hg cikhông có -Acờ thì tương đương git commit -a. Tôi đã sử dụng git nhiều hơn hg, vì vậy tôi không chắc chắn 100%.
Zhehao Mao

Tôi đã kiểm tra, hg ci== git commit -a.
Zhehao Mao

nhưng nếu bạn chỉ định các tệp cụ thể với cam kết hg, bạn có thể tránh kéo theo những tệp bạn không muốn. Trong các trường hợp không thường xuyên mà tôi muốn kiểm soát này, tôi thấy điều này hoạt động tốt.
Alex Miller

1
tại sao bạn lại "git add." và sau đó "git commit -am"? Không phải mọi thứ đã được thêm vào chỉ mục?
jacobangel

3

Bởi vì nó là.

Git phơi bày nhiều hơn rất nhiều so với ruột của nó. Bạn có thể vui vẻ sử dụng mercurial trong vài phút sau khi nhặt nó lên nhưng tôi thấy git vẫn rất khó khăn để vật lộn với nó sau vài tháng vật lộn với nó (tôi đã làm rất ít trong vài tháng qua ngoài việc cố gắng học git ). Tôi đang sử dụng cả hai từ dòng lệnh và chủ yếu là trên Linux vì vậy đây không chỉ là sự ác cảm với giao diện dòng lệnh.

Một ví dụ đơn giản là tương đối ít cờ và đối số dòng lệnh cần thiết cho đồng bóng so với git. Khu vực tổ chức và hành vi của lệnh add trong git cũng làm tăng thêm độ phức tạp hơn mức cần thiết. Bộ ba thiết lập lại, kiểm tra và hoàn nguyên và nhiều hoán vị của chúng làm tăng thêm sự phức tạp to lớn, điều này khá không cần thiết khi bạn chứng kiến ​​bản chất đơn giản của hoàn nguyên và cập nhật trên đồng bóng.

Tôi đồng ý với nhận xét trên cũng về Hginit , nó chắc chắn làm cho dễ hiểu hơn nhiều. Được viết tốt và rất dễ hiểu. Không có tài liệu nào viết cho git đến gần. Tôi cho một, tìm thấy hầu hết những gì được viết bởi Scott Chacone (người đã tự tay viết hầu hết các tài liệu / sách về git) đặc biệt khó hiểu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.