ทำไม Mercurial ถึงคิดว่าง่ายกว่า Git


204

เมื่อดูที่การเปรียบเทียบดูเหมือนว่าฉันอาจมีการแมป 1: 1 ระหว่างชุดคุณลักษณะของพวกเขา แต่ข้อความที่อ้างถึงบ่อยครั้งก็คือ "Mercurial is easy" พื้นฐานของข้อความนี้คืออะไร? (ถ้ามี)


21
แปลกประหลาดฉันไม่เคยได้ยิน Mercurial ง่ายกว่านี้ ฉันพบเอกสารเพิ่มเติมสำหรับ Git (อาจมีการรับรู้) ดังนั้นฉันจึงได้เรียนรู้ว่า
Nic

16
เพราะมันทำโดย Linus?
งาน

124
เมื่อเข้าไปในเขตสงครามศักดิ์สิทธิ์ที่นี่ แต่ฉันพบว่า Mercurial ใช้งานง่ายกว่า Git เพราะในฐานะผู้ใช้ Windows ฉันรู้สึกยินดีกับ Mercurial และได้รับการปฏิบัติเหมือนเป็นคนประหลาดและเป็นผู้แพ้โดย Git ฉันรู้ว่าฉันเป็นมนุษย์เปลี่ยนแปลงซอฟแวร์และฉันรู้ว่าทั้งคู่มีความสามารถในการใช้งานได้อย่างสมบูรณ์แบบภายใต้ Windows แต่นั่นเป็นความประทับใจที่ได้รับจากทั้งสองคน
Carson63000


11
ฉันสงสัยว่ามีกี่คนที่จะใช้ Git ถ้า Github ไม่มีตัวตนหรือไม่มีโปรเจ็กต์ชั้นสูงมากมายในนั้น?
Chris S

คำตอบ:


240

ตรงประเด็น: ให้บอกว่าคุณต้องการเปลี่ยนชื่อผู้ใช้ในการกระทำก่อนหน้านี้ทั้งหมดของคุณ ฉันต้องทำหลายครั้งด้วยเหตุผลหลายประการ

เวอร์ชัน 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

เวอร์ชั่น Mercurial:

ไฟล์hors.convert.list:

<oldname>=<newname>

บรรทัดคำสั่ง:

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

ตอนนี้อันไหนที่ดูใช้ง่ายกว่ากัน?


หมายเหตุ: ฉันใช้เวลา 2 ปีในการทำงานกับ Git เพียงลำพังดังนั้นนี่ไม่ใช่ "ฉันเกลียดมันฉันไม่ได้รับมันใน 2 วินาที"

สำหรับฉันมันคือการใช้งาน Git นั้นเน้นลินุกซ์เป็นอย่างมากในการทำสิ่งต่างๆ นั่นหมายถึงบรรทัดคำสั่งหน้าคนและค้นหาด้วยตัวคุณเอง มันมี GUI ที่แย่มาก ๆ (หมายเหตุ: ฉันกำลังอ้างอิง msysGit นี้เมื่อประมาณหนึ่งปีที่แล้ว) ซึ่งดูเหมือนว่าจะเข้าทางของฉัน ฉันแทบจะไม่สามารถใช้มัน

บรรทัดคำสั่งแย่ลง การเป็นโปรแกรม Linux บน Windows มันยากมากที่จะใช้ แทนที่จะเป็นพอร์ตดั้งเดิมพวกเขาเพียงห่อคอมไพล์ด้วย MinGW (คิดว่า cygwin) ซึ่งทำให้การทำงานกับมันยากขึ้นมาก MinGW ไม่ใช่ Windows Command Prompt และทำหน้าที่ต่างกัน มันบ้าว่านี่เป็นวิธีเดียวที่จะทำงานกับ Git แม้แต่ใน Linux ก็ดูเหมือนจะเป็นวิธีเดียวที่จะทำงานกับบรรทัดคำสั่งตรง โครงการเช่น RabbitVCS ช่วยบ้าง แต่ก็ไม่ได้ทรงพลังมาก

แนวทางของบรรทัดคำสั่งและการเป็นโปรแกรม linux หมายความว่าคู่มือ howto เกือบทั้งหมดเอกสารวิธีใช้และคำถามในฟอรัม / คำถามเกี่ยวกับ QA อาศัยการใช้คำสั่งมหึมาดังกล่าว คำสั่ง SCM พื้นฐาน (กระทำ, ดึง, ดัน) นั้นไม่ซับซ้อน แต่มีความซับซ้อนเพิ่มมากขึ้นเรื่อย ๆ

ฉันยังเกลียดสถานที่แห่งเดียวที่ผู้ใช้คอมไพล์ OSS ดูเหมือนจะค้างคาอยู่: Github เมื่อคุณไปที่หน้า GitHub ครั้งแรกมันจะตบหน้าคุณด้วยทุกสิ่งที่คุณสามารถทำได้ สำหรับฉันหน้าคอมไพล์โปรเจ็กต์นั้นดูวุ่นวายวุ่นวายและมีพลังมากเกินไป แม้แต่คำอธิบายว่าโครงการคืออะไรถูกผลักลงไปด้านล่าง Github สร้างความเจ็บปวดให้กับผู้ที่ไม่มีเว็บไซต์เต็มรูปแบบอยู่แล้ว ติดตามปัญหาของมันก็แย่มากและสับสน คุณสมบัติเกินพิกัด

ผู้ใช้ Git ก็ดูเหมือนจะนับถืออย่างมาก ผู้ใช้ Git ดูเหมือนจะเป็นผู้ที่เริ่มต้น "สงครามศักดิ์สิทธิ์" ซึ่ง DVCS ดีกว่าอยู่แล้วซึ่งบังคับให้ผู้ใช้ Mercurial ปกป้องตนเอง ไซต์เช่นhttp://whygitisbetterthanx.com/แสดงความเย่อหยิ่งและความคิด "ใช้ซอฟต์แวร์ของฉันหรือตาย" เกือบ หลายครั้งที่ฉันเข้าไปในสถานที่ช่วยเหลือต่าง ๆ เพียงเพื่อจะได้รู้ตัวว่าไม่รู้ X ใช้ X ไว้ล่วงหน้าใช้ Windows ฯลฯ มันบ้า


Mercurial ในทางกลับกันดูเหมือนว่าจะไปสู่แนวทางที่อ่อนโยนกว่า ของตัวเองที่หน้าบ้านดูเหมือนมากขึ้นเป็นมิตรกับผู้ใช้ใหม่กว่าGit ของ ในการค้นหาของ Google แบบง่ายผลลัพธ์ที่ 5 คือ TortoiseHg ซึ่งเป็น GUI ที่ดีมากสำหรับ Mercurial วิธีการทั้งหมดของพวกเขาดูเหมือนจะเรียบง่ายก่อนใช้พลังงานในภายหลัง

ด้วย Mercurial ฉันไม่มี SSH ไร้สาระ (SSH เป็นนรกบน Windows) ฉันไม่มีคำสั่งที่ซับซ้อนอย่างโง่เขลาฉันไม่มีผู้ใช้ที่ติดตามลัทธิฉันไม่มีความบ้าคลั่ง Mercurial ใช้งานได้แล้ว

TortoiseHg ให้ส่วนต่อประสานที่ใช้งานได้จริง (แม้ว่าเมื่อเร็ว ๆ นี้ดูเหมือนว่าจะเพิ่มขึ้น) ซึ่งมีคุณสมบัติที่มีประโยชน์จริง ๆ ตัวเลือกจะถูก จำกัด ในสิ่งที่คุณต้องการลบความยุ่งเหยิงและตัวเลือกที่ไม่ค่อยได้ใช้ นอกจากนี้ยังมีค่าเริ่มต้นที่เหมาะสมอีกมากมาย

Mercurial เป็นมิตรกับผู้มาใหม่มากง่ายต่อการรับ แม้แต่หัวข้อที่ซับซ้อนมากขึ้นเช่นรูปแบบการแตกแขนงที่แตกต่างกันและการแก้ไขประวัติก็ง่ายต่อการติดตาม ฉันหยิบ Mercurial ขึ้นมาอย่างรวดเร็วและไม่ลำบาก

Mercurial ยังใช้งานได้เป็นครั้งแรกด้วยการตั้งค่าเล็กน้อย บนระบบปฏิบัติการใด ๆ ฉันสามารถติดตั้ง TortoiseHg และรับคุณสมบัติทั้งหมดที่ฉันต้องการ (คำสั่งเมนูบริบทส่วนใหญ่) โดยไม่ต้องค้นหา Guis ที่แตกต่างกัน ที่ขาดหายไปก็คือการตั้งค่า SSH (ครึ่งหนึ่งของคำแนะนำที่นั่นบอกว่าจะใช้ Putty, Plink และ Pagent ในขณะที่อีกครึ่งหนึ่งบอกว่าจะใช้ ssh-keygen) สำหรับผู้ใช้ใหม่ TortoiseHg ใช้เวลาในการตั้งค่าในขณะที่ Git ใช้เวลา 30 นาทีถึงหนึ่งชั่วโมงด้วย googling มากมาย

สุดท้ายคุณมี repos ออนไลน์ เทียบเท่า Github คือ BitBucket ซึ่งมีปัญหาบางอย่างที่ฉันระบุไว้ข้างต้น อย่างไรก็ตามยังมี Google Code เมื่อฉันไปที่โครงการ Google Codeฉันไม่ได้รับฟีเจอร์โอเวอร์โหลดฉันได้รับส่วนต่อประสานที่ดี Google Code เป็นคำสั่งผสมแบบ repo / เว็บไซต์ออนไลน์ซึ่งช่วยให้โครงการ OSS ที่ไม่มีการตั้งค่าไซต์มีอยู่จริง ๆ ฉันรู้สึกสบายใจที่จะใช้ Google Code เป็นเว็บไซต์โครงการของฉันสักพักสร้างเว็บไซต์เมื่อจำเป็นเท่านั้น ตัวติดตามปัญหาของมันยังทรงพลังเหมาะอย่างยิ่งในการติดตามปัญหาที่ไร้ประโยชน์เกือบระหว่าง Github กับBugzilla ที่น่าประหลาดใจ

Mercurial ใช้งานได้ครั้งแรกทุกครั้ง Git เข้ามาในทางของฉันและทำให้ฉันโกรธยิ่งฉันใช้มากขึ้นเท่านั้น


6
ผู้แสดงความคิดเห็น:ความคิดเห็นมีไว้เพื่อค้นหาการชี้แจงไม่ใช่เพื่อการอภิปรายเพิ่มเติม หากคุณมีทางออกให้ออกคำตอบ หากวิธีการแก้ปัญหาของคุณโพสต์แล้วกรุณา upvote มัน หากคุณต้องการที่จะหารือเกี่ยวกับคำถามนี้กับคนอื่น ๆ โปรดใช้แชท ดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติม

1
IntelliJ IDEA และ Xcode 4 มีการรวมที่ยอดเยี่ยมกับ Git บนแพลตฟอร์มที่เกี่ยวข้องและสำหรับงานประจำวันคุณไม่ต้องใช้บรรทัดคำสั่ง

4
ฉันต้องการจะเพิ่ม tortoiseGIT ที่ดีขึ้นมากตอนนี้เมื่อคุณต้องการใช้ GIT บน windows คุณยังต้องจัดการกับคีย์ SSL และกระบวนการติดตั้งไม่ราบรื่น แต่เมื่อดำเนินการเสร็จแล้วก็สามารถทำงานได้อย่างง่ายดาย
Arkh

2
ส่วนขยาย Git ฉันค้นหาและใช้งานได้ง่ายกว่า TortoiseHG บน windows โดยส่วนตัวแล้วฉันใช้ 1 command line กับ git เท่านั้น
KallDrexx

1
ฉันรู้สึกงุนงงกับบรรทัดนี้: "MinGW ไม่ใช่ Windows Command Prompt และทำหน้าที่แตกต่างกันมันบ้าว่านี่เป็นวิธีเดียวที่จะทำงานกับ Git" ฉันใช้การติดตั้ง msysgit และตัวเลือก 2 เพื่อเรียกใช้จากบรรทัดคำสั่งของ Windows มันใช้งานได้ดี มีบางสิ่งที่ไม่ทำงาน (เช่นคาเร็ต, อักขระที่ต่อเนื่องในระบบดอส) แต่มีทางเลือกอื่นสำหรับสิ่งเหล่านั้น (เช่นตัวหนอน) ที่ทำงานได้ดี ฉันไม่ใช่คนที่ชอบบรรทัดคำสั่ง (หรืออย่างน้อยฉันก็ไม่ได้ก่อนที่จะเริ่มเรียนรู้ Git) แต่การใช้ Git กับบรรทัดคำสั่งนั้นง่ายมาก ฉันพลาดอะไรไปรึเปล่า?
Kyralessa

80

Git กับ Mercurial

โดยทั่วไปแล้ว Mercurial นั้นเชื่อว่าจะง่ายกว่าและเรียนรู้ได้ง่ายกว่า Git ในทางกลับกันมักจะมีการรับรู้ว่า Git นั้นมีความยืดหยุ่นและมีประสิทธิภาพมากกว่า นี่เป็นเพราะส่วนหนึ่งเนื่องจาก Git มีแนวโน้มที่จะให้คำสั่งระดับต่ำมากขึ้น แต่ส่วนหนึ่งเป็นเพราะ Mercurial เริ่มต้นมีแนวโน้มที่จะซ่อนคุณสมบัติขั้นสูงปล่อยให้ผู้ใช้แก้ไขไฟล์ Mercurial เพื่อเปิดใช้งานคุณสมบัติขั้นสูงที่พวกเขาต้องการ สิ่งนี้มักจะนำไปสู่การรับรู้ว่าคุณสมบัติขั้นสูงไม่สามารถใช้ได้ใน Mercurial

แนวคิด Git

Mercurial ให้ความสำคัญกับส่วนต่อประสานมากขึ้นซึ่งทำให้ง่ายต่อการเรียนรู้ เมื่อเปรียบเทียบกับ Git จำเป็นต้องมีความเข้าใจที่ตื้นกว่าเพื่อใช้งานกับ Mercurial ในลักษณะที่มีประโยชน์ ในระยะยาวการห่อหุ้มดังกล่าวทำให้ Mercurial มีลักษณะที่ผิด ๆ ว่ามีพลังน้อยลงและมีคุณสมบัติมากกว่าที่เป็นจริง


73
ดังนั้น Mercurial ซ่อนเพียง แต่การทำงานขั้นสูงในขณะที่ GIT ซ่อนทุกฟังก์ชั่น ... ;-)
กลัว

4
Git จะมีอำนาจมากขึ้น ตัวอย่างเช่นมีเทียบเท่ากับคอมไพล์ไม่มีหัว ~ 1 Mercurial มี p (x) ซึ่งครอบคลุมสาขาต่าง ๆ ไร้ประโยชน์แค่ไหน ไม่มีเวทีใน Hg ต้องผลักสาขาทั้งหมดเมื่อคุณกด Mercurial นั้นไม่ยืดหยุ่นแม้แต่กับปลั๊กอินทั้งหมดอย่างเช่นฮิสเทดิท, ชั้นวางและการรีบูต บรรทัดคำสั่งของ Git นั้นดีกว่ามันให้คำแนะนำแก่ผู้ใช้ Mercurials ไม่ได้ ฉันถูกบังคับให้ใช้ DVCS ที่พิการเล็กน้อยนี้ในที่ทำงานและฉันเข้ามาในสถานการณ์ที่ Mercurial ขาดพลังในการทำสิ่งที่ฉันต้องการ
Keyo

22
@Keyo: Mercurial มี~ให้ดูที่การคืนค่า มันไม่มีพื้นที่จัดเตรียม แต่คุณสามารถเลียนแบบด้วย MQ ซึ่งมีประสิทธิภาพมากกว่ามาก เรียนรู้การใช้เครื่องมือแทนที่จะยึดติดกับสิ่งที่คุณรู้จากคอมไพล์มันจะจ่ายออก
Idan K

22
@Keyo: คุณไม่ต้องกดทุกสาขาด้วย Mercurial เมื่อคุณกด คุณสามารถผลักดันสาขาที่เฉพาะเจาะจง ( hg push --branch BRANCH) หรือสูงถึงการแก้ไขที่เฉพาะเจาะจง ( hg push --rev REV) โปรดดูhg help pushตัวเลือกเพิ่มเติม
ผู้สำเร็จราชการแผ่นดิน

1
FYI หนึ่งจะได้รับชุดย่อยมากของพื้นที่การแสดงละครโดยใช้นามสกุลบันทึก OTOH ฉันคิดว่าส่วนขยายแบบชั้นวาง (จำลองตามคำสั่ง "shelve" จาก Baazar และใกล้กับ "git stash") ให้บริการวัตถุประสงค์ที่ดีที่สุดของการใช้พื้นที่จัดเตรียม
brandizzi

47

บริบท: ฉันใช้ทั้ง Mercurial (สำหรับงาน) และ Git (สำหรับโครงการด้านข้างและโอเพ่นซอร์ส) เป็นประจำทุกวัน ฉันใช้เครื่องมือข้อความเป็นหลักทั้ง (ไม่ใช่ IDE) และฉันใช้ Mac

โดยทั่วไปแล้วฉันพบว่า Mercurial ทำงานง่ายขึ้น บางสิ่งที่ฉันพบทำให้ Mercurial ง่ายขึ้น:

  1. ขาดดัชนี ดัชนีเป็นเครื่องมือที่ทรงพลังที่ทำให้ฟีเจอร์ของ Git มากมาย แต่มันก็เป็นเลเยอร์พิเศษที่เพิ่มขั้นตอนในหลาย ๆ สิ่งที่ฉันทำอย่างสม่ำเสมอ เวิร์กโฟลว์ของ Mercurial คล้ายกับบางอย่างใน svn
  2. หมายเลขการตรวจทานแทน shas นี่เป็นสิ่งเล็ก ๆ ที่ฉันพบว่าทำให้การทำงานกับทุก ๆ วันนั้นง่ายขึ้นมากใน Mercurial เป็นวิธีที่ง่ายกว่าที่จะผลักดันตัวเลขการแก้ไขสองสามครั้งเข้าไปในหัวของคุณระหว่างการรีบูตการผสานและอื่น ๆ ในขณะที่เขียนคำสั่งแทนที่จะทำแบบเดียวกันกับ shas ที่สั้นกว่า
  3. สาขา วิธีการของ Git ในการแยกสาขาโดยการตั้งชื่อการกระทำนั้นมีประสิทธิภาพและแตกต่างอย่างมากจากระบบควบคุมเวอร์ชันอื่น ๆ มันทำให้บางสิ่งง่ายขึ้นมาก ฉันพบว่าวิธีการของ Mercurial จับคู่ svn คิดดีขึ้นเล็กน้อยและทำให้ง่ายขึ้นในการเข้าใจประวัติศาสตร์สาขา นี่อาจเป็นสิ่งที่ชอบ

6
+1 สำหรับการกล่าวถึงดัชนี ผมคิดว่าดัชนีและการมีปฏิสัมพันธ์ที่มีสิ่งหนึ่งที่ทำให้คอมไพล์ยากมากที่จะเรียนรู้กว่าปรอท
Sean McMillan

18
hgเทียบเท่ากับสาขาเรียกว่าจริงgit bookmarksเท่าที่ผมรู้ว่าสาขาไม่ได้เทียบเท่าhg git
Hank Gay

6
ฉันอยู่ในสถานการณ์เดียวกันกับ Mercurial ที่ทำงานและคอมไพล์ที่บ้าน Mercurial branching ค่อนข้างน่ารำคาญสำหรับฉันฉันชอบที่จะมีกิ่งไม้ส่วนตัวและผลักมันเมื่อฉันชอบ Mercurial บังคับให้ฉันใช้ชั้นวางหรือ repos เพิ่มเติม หมายเลขการแก้ไขเป็นเรื่องโง่ให้แฮช เวทีดีมากในคอมไพล์ฉันคิดถึงสิ่งนี้ ฉันขาดพลังของคอมไพล์จริงๆ ฉันทำสิ่งเล็ก ๆ น้อย ๆ กับปลั๊กอินบางอย่าง แต่การแตกแขนงทำให้ฉันรำคาญจริงๆ
Keyo

6
@Keyo - จากประสบการณ์ของฉันการgitแยกเป็นส่วนย่อยของการhgแยก ในhgคุณสามารถมีทั้งชื่อที่ตั้งชื่อและไม่มีชื่อ (โทโพโลยี) และสามารถจัดการสาขาที่ไม่มีชื่อในลักษณะเดียวกับการgitใช้ที่คั่นหน้า ฉันไม่เคยเห็นจุดในพื้นที่จัดแสดงจริง ๆ ฉันอยากจะแก้ไขการเปลี่ยนแปลงที่ไม่ต้องการแล้วให้แน่ใจว่ารหัสของฉันรวบรวม & ทำการทดสอบของฉันก่อนที่จะยอมรับ ฉันสามารถยกเลิกการเก็บและดำเนินการต่อ นอกจากนี้ Charles Bailey's "Massaging Hunks" (p90 +) ทำให้ฉันกลัว * 8 '): accu.org/content/conf2011/accu2011LT_fri_share_v2.pdf
Mark Booth

7
@Keyo: ใน Mercurial สาขาส่วนตัวจะเรียกว่า 'บุ๊คมาร์ค': การปรับปรุงเพื่อแก้ไขรากhg bookmark keyo-stuffทำสิ่งนั้นในที่สุดhg commit hg push -B keyo-stuffหากคุณไม่ชอบหมายเลขการแก้ไขอย่าใช้มัน Mercurial จะยอมรับแฮชทุกที่ที่มันจะรับหมายเลขการแก้ไขฉันคิดว่า ฉันต้องบอกว่าความคิดเห็นของคุณทุบตี Mercurial เนื่องจากการขาดคุณสมบัติที่เป็นไปได้ในความเป็นจริงนั้นเกิดขึ้นเพราะไม่รู้และก้าวร้าวเล็กน้อย คุณไม่ได้ทำอะไรมากมายสำหรับผู้ใช้ Git!
Tom Anderson

29

นี่เป็นเรื่องส่วนตัวมากและขึ้นอยู่กับคนคนหนึ่ง แต่ใช่ฉันจะไปกับคนที่ใหม่กับ VCS หรือคนที่มาจาก VCS "โรงเรียนเก่า" Mercurial จะดูง่ายขึ้น

ตัวอย่างเช่นการเพิ่มไฟล์การไม่มีอยู่ของดัชนีใน Hg ความง่ายในการย้อนกลับไปยังการแก้ไขเก่าและการแตกแขนงจากที่นั่น (เพียงแค่อัปเดตและกระทำ) เป็นตัวอย่างที่ชัดเจนที่สุด ตอนนี้คุณลักษณะส่วนใหญ่ของระบบหนึ่งสามารถเลียนแบบได้ในอีกระบบหนึ่งและในทางกลับกัน แต่นั่นต้องใช้ความรู้บางอย่างใน Git ในขณะที่ Mercurial เป็นค่าเริ่มต้น สิ่งเล็ก ๆ น้อย ๆ เหล่านั้น - สวิตช์ที่นี่และที่นั่นพฤติกรรมที่ไม่ชัดเจนในคำสั่งเดียวและอื่น ๆ ... สิ่งเหล่านี้รวมกันและในท้ายที่สุดระบบหนึ่งดูเหมือนจะใช้งานง่ายกว่าอีกระบบหนึ่ง

เพียงเพื่อให้คำตอบสมบูรณ์ ฉันใช้คอมไพล์ แต่เมื่อแนะนำ VCS ให้กับคนที่ "ใหม่กับพวกเขา" ฉันมักจะแนะนำ Mercurial ฉันจำได้ว่าเมื่อมันเข้ามาในมือของฉันครั้งแรกมันให้ความรู้สึกเป็นธรรมชาติมาก เป็นประสบการณ์ของฉันที่ Mercurial ผลิต wtf / นาทีน้อยกว่า Git


+1 สำหรับ "less wtf / นาที" -1 สำหรับ "นี่เป็นอัตนัย" มันไม่ได้เป็นอัตวิสัยมากนัก ... ฉันไม่รู้ว่าทำไมคนยังคิดว่า UI ต่างกัน ถ้าฉันใช้คำสั่ง Mercurial และ md5 คุณจะไม่โต้แย้งว่าบางคนอาจพบว่า md5 แฮชใช้งานได้ง่ายกว่าแบบเดิมคุณจะไหม? (ฉันหวังว่าไม่ได้) เช่นเดียวกับ Git Git นั้นง่ายกว่า Mercurial ถ้าประสบการณ์ของคุณเกี่ยวกับ Git นั้นสำคัญกว่า Mercurial
weberc2

17

ฉันคิดว่ามันง่ายอย่างนี้ Mercurial มีรูปแบบที่คุ้นเคยมากกว่า (โดยเฉพาะสำหรับผู้ใช้ SVN) และมีเอกสารที่ค่อนข้างดี เมื่อคุณคุ้นเคยกับไวยากรณ์ Git แล้วคุณจะพบว่ามันใช้งานง่ายเหมือนอย่างอื่น


7
Nope มีขั้นตอนเวิร์กโฟลว์มากเกินไปที่คุณจะเรียกได้ว่าเป็น "ไวยากรณ์ที่แตกต่าง" คุณต้องเข้าใจโมเดลพื้นฐานที่คุณกำลังใช้งานอยู่และสถานะทั้งหมดของดัชนี git เพื่อใช้ Git การบอกว่า SQL และ Pascal เป็นสองรูปแบบที่แตกต่างกันสำหรับสิ่งเดียวกันจะผิดอย่างเท่าเทียมกัน Git เป็นระบบการจัดทำเนื้อหาระบบไฟล์ที่มีคุณสมบัติ DVCS Mercurial เป็น DVCS ที่ไม่ได้ดำเนินการกับทุกการดำเนินการของระบบไฟล์เนื้อหา GIT ทำเฉพาะส่วนย่อยที่ผู้ใช้ DVCS ต้องการทั้งหมด
Warren P

9

การรับรู้อาจเปลี่ยนแปลงไปตามกาลเวลา Mercurial ได้รับการออกแบบมาเป็นอย่างดี Git Mercurial ดูเหมือนจะง่ายต่อการเรียนรู้ (อย่างน้อยก็สำหรับฉัน) และมีปัญหาที่ฉันพบใน Git ว่าฉันไม่ได้มีคู่ขนานกันใน Mercurial ฉันพยายามเรียนรู้ Python และ Ruby และไกลขึ้นเร็วขึ้นด้วย Python นั่นไม่ได้หมายความว่า Python จะดีกว่า Ruby ทุกครั้งหรือแม้แต่ดีกว่าสำหรับฉัน มันเป็นสิ่งที่ฉันเรียนรู้และติดอยู่ โปรแกรมเมอร์มักทำให้สงครามศักดิ์สิทธิ์ไม่เป็นที่ต้องการ มนุษย์คนอื่นก็ทำเช่นกัน

ฉันเป็นผู้ใช้ Mercurial ที่พยายามรักษาใจที่เปิดกว้างเกี่ยวกับ Git และฉันยอมรับอย่างอิสระว่าจะไม่ "กลายเป็นสิ่งที่ฉันโปรดปรานใหม่" ในระดับเดียวกับ Mercurial ฉันคิดว่า Git นั้นดีจริงๆ

ตัวอย่างตัวนับสำหรับความซับซ้อนของ GIT / Mercurial: การสนับสนุน GIT ที่ดีถูกสร้างขึ้นใน XCode บน Mac ใช้งานง่าย XCode น้อยกว่า Mercurial กว่า GIT

ประสบการณ์ของฉันกับ GIT จนถึงขณะนี้คือฉันสับสนและหลงทางและต้องไปอ่านเอกสารเพิ่มเติมในขณะที่ใช้งาน ฉันเชื่อว่าเอกสารจำนวนมากถูกเขียนขึ้น แต่ไม่มีอะไรที่ทำให้ฉัน "คร่ำครวญ" ได้ ประการที่สองฉันสามารถปรับเปลี่ยนและขยาย Mercurial ได้อย่างง่ายดายใน Python และเมื่อฉันเชี่ยวชาญใน Python และในขณะที่ทุกคนสามารถเรียนรู้ Python ได้อย่างรวดเร็วดูเหมือนว่าจะเป็นประโยชน์สำหรับฉัน ฉันรู้จัก C และเขียนส่วนขยาย Python ใน C ดังนั้นฉันคิดว่าสักวันถ้าฉันต้องการมันฉันก็สามารถเขียน Git extension ใน C ได้อย่างง่ายดาย

ความง่ายในการใช้งานไม่ใช่สิ่งที่ง่ายต่อการหาจำนวน มันอยู่ที่นั่นและฉันไม่คิดว่ามันเป็นอัตวิสัยทั้งหมด แต่เราไม่มีเทคนิคการวัดที่ดี ยูนิตที่ใช้งานง่ายจะเป็นอย่างไร หนึ่งในพัน iPods?

ฉันไม่เข้าข้างเลยว่าเป็นคนโปร 100% และต่อต้าน 100% ฉันรู้สึกสะดวกสบายมากขึ้นกับ Mercurial ในตอนนี้บน Windows และบน Linux และเมื่อฉันเริ่มทำงาน Mac มากขึ้นฉันคาดหวังว่าฉันจะพยายามติดกับ XCode + GIT

ปรับปรุง 2013:ฉันได้ใช้ตอนนี้ Mercurial และ GIT นานพอที่จะพบคุณสมบัติบางอย่างที่ฉันต้องการมันมีที่ Git มีเช่นนี้คำถามเกี่ยวกับกลยุทธ์การผสาน จริง ๆ แล้ว Git นั้นน่าทึ่งถ้าเรียนรู้ยากและบางครั้งก็ซับซ้อนอย่างน่าเกรงขาม


7

มีบางสิ่งที่ IMO มีแนวโน้มที่จะนำผู้ใช้ใหม่ออกจาก Git:

  1. วัฒนธรรม Git นั้นเป็นศูนย์กลางของบรรทัดคำสั่งมากกว่า ในขณะที่เครื่องมือทั้งสองมักจะเน้นที่บรรทัดคำสั่งมากเกินไป (อย่างที่ฉันพูดไปหลายครั้งคำสั่งของบรรทัดคำสั่งอาจมีประสิทธิภาพและคล่องแคล่วมากขึ้น แต่มันไม่ใช่กลยุทธ์การตลาดที่ดี ) นี่เป็นกรณีของ Git ในขณะที่ Mercurial มีเครื่องมือ GUI มาตรฐานแบบพฤตินัยใน TortoiseHg ซึ่งเป็นตัวเลือกการดาวน์โหลดเริ่มต้นสำหรับผู้ใช้ Windows บนหน้าแรกของ Mercurial Git มีส่วนหน้า GUI ที่แข่งขันกันหลายส่วน (TortoiseGit, Git Extensions, gitk และอื่น ๆ ) บนเว็บไซต์ Git และทั้งหมดนี้เป็นสิ่งที่อุจาดนัยน์ตาสมบูรณ์ (ตัวอักษรสีดำบนฉลากสีแดง? C'mon, TortoiseGit คุณสามารถทำได้ดีกว่านั้น!) นอกจากนี้ยังมีทัศนคติที่แพร่หลายมากขึ้นในชุมชน Git ที่ผู้ใช้เครื่องมือ GUI ไม่ได้เป็นนักพัฒนาซอฟต์แวร์ที่เหมาะสม

  2. Git มีค่าเริ่มต้นที่ไม่เป็นไปตามข้อกำหนดหลายประการซึ่งเหมาะสมกับผู้ใช้ขั้นสูง แต่น่าจะแปลกใจหากไม่ได้ข่มขู่ผู้ใช้รายใหม่ ยกตัวอย่างเช่นมันมีความก้าวร้าวมากขึ้นเกี่ยวกับการทำงานอัตโนมัติเช่นการรวม (ตัวอย่างเช่น git pull จะทำการผสานและกระทำโดยอัตโนมัติหากเป็นไปได้) มีกรณีสำหรับการผสานอัตโนมัติแต่ผู้ใช้ที่ไม่มีประสบการณ์ส่วนใหญ่กลัวการรวมและต้องได้รับโอกาสที่จะได้รับความมั่นใจในเครื่องมือของพวกเขาก่อนที่จะปลดปล่อยพลังเต็มในซอร์สโค้ดของพวกเขา

  3. เอกสารและความซับซ้อนโดยธรรมชาติ:

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

3
ที่จริงแล้วฉันต้องการความช่วยเหลือที่มีความยาว 912 บรรทัดสำหรับความช่วยเหลือที่ 64
Dysaster

10
จริงๆแล้วฉันชอบ UI ที่ใช้งานง่ายและไร้รอยต่อจนคุณไม่ต้องการความช่วยเหลือตั้งแต่แรก
jammycakes

2
ฉันต้องการทั้ง GUI และความช่วยเหลือ :) สิ่งที่ฉันคิดว่าเป็นเรื่องง่ายสำหรับคนอื่น
Dysaster

1
แน่นอน แต่เมื่อจำเป็นต้องมีความช่วยเหลือก็ควรทำตามได้ง่าย
jammycakes

3
ฉันคิดถึงการเปรียบเทียบใหม่ Git เป็นเหมือน C ++ (ขออภัย Linus!) และ Mercurial เป็นเหมือน Pascal สิ่งที่เป็นนัยและสามารถทำได้เพียงวิธีเดียวใน Pascal (หรือ Mercurial) สามารถทำได้อย่างชัดเจนโดยมีวิธีที่แตกต่างกันสิบเก้าวิธีใน C ++ (และ Git) บางคนชอบ powertools ที่มีปุ่มและคันโยกมากกว่าและ Git ก็เป็นเช่นนั้น
วอร์เรน P

3

สิ่งหนึ่งที่ฉันคิดได้ก็คือ

git add .
git commit -am "message"

เมื่อเทียบกับ

hg ci -Am "message"

git commit -aไม่ได้เพิ่มไฟล์ที่สร้างขึ้นใหม่hg ci -Aซึ่งหมายความว่าสิ่งที่ต้องใช้สองคำสั่งด้วย git สามารถทำได้ด้วยคำสั่งเดียวใน Mercurial จากนั้นอีกครั้ง "พิมพ์น้อยลง" ไม่ได้แปลว่า "เป็นมิตรกับผู้ใช้มากขึ้น"


11
ฉันมักพบว่าในขั้นตอนการทำงานของฉันการเพิ่มไฟล์ใหม่โดยอัตโนมัตินั้นเป็นสิ่งที่ไม่พึงปรารถนา ฉันชอบวิธีการgit commit -aทำงานเพียงเพราะทำให้ง่ายต่อการควบคุมสิ่งที่ทำและไม่ได้รับการเพิ่มสำหรับการคอมมิทที่ระบุ (ที่จริงแล้วมันไม่ใช่เรื่องแปลกสำหรับฉันที่จะระบุชื่อพา ธ แต่ละอันสำหรับทุกคนsvn ciเพื่อหลีกเลี่ยงการเพิ่มเนื้อหาที่ไม่เกี่ยวข้องลงในการคอมมิชชัน)
greyfade

3
ยุติธรรมเพียงพอ แต่ผมเชื่อว่าhg ciโดยไม่มีธงไม่เทียบเท่า-A git commit -aฉันใช้คอมไพล์มากกว่า hg ดังนั้นฉันจึงไม่แน่ใจ 100%
Zhehao Mao

ผมได้ตรวจสอบ, ==hg ci git commit -a
Zhehao Mao

แต่ถ้าคุณระบุไฟล์เฉพาะด้วย hg commit คุณสามารถหลีกเลี่ยงการดึงไฟล์ที่คุณไม่ต้องการ ในบางกรณีที่ฉันต้องการการควบคุมนี้ฉันพบว่ามันใช้งานได้ดี
Alex Miller

1
ทำไมคุณถึงต้อง "คอมไพล์เพิ่ม" และ "git กระทำ -am"? ทุกอย่างจะไม่ถูกเพิ่มไปยังดัชนีหรือไม่
jacobangel

3

เพราะมันเป็น.

Git เผยให้เห็นถึงความกล้ามากกว่า Mercurial คุณสามารถใช้ mercurial ได้อย่างมีความสุขภายในไม่กี่นาทีหลังจากหยิบมันขึ้นมา แต่ฉันพบว่าคอมพิวติงยังคงยากที่จะต่อสู้กับหลังจากผ่านไปสองสามเดือนของการต่อสู้ด้วย (ฉันได้ทำน้อยมากในช่วงสองสามเดือนที่ผ่านมา ) ฉันใช้ทั้งจากบรรทัดคำสั่งและส่วนใหญ่บน Linux ดังนั้นนี่ไม่ใช่เพียงแค่ความเกลียดชังต่ออินเตอร์เฟสบรรทัดคำสั่ง

ตัวอย่างง่ายๆอย่างหนึ่งคือค่าสถานะที่ค่อนข้างน้อยและอาร์กิวเมนต์บรรทัดคำสั่งที่จำเป็นสำหรับ mercurial เมื่อเปรียบเทียบกับ git พื้นที่การจัดเตรียมและพฤติกรรมของคำสั่งเพิ่มในคอมไพล์ยังเพิ่มความซับซ้อนมากกว่าที่จำเป็น การรีเซ็ต, การชำระเงินและการย้อนกลับและการเรียงสับเปลี่ยนหลายครั้งของพวกเขาเพิ่มความซับซ้อนอย่างมากซึ่งไม่จำเป็นเลยเมื่อคุณเห็นธรรมชาติของการย้อนกลับและอัปเดตเกี่ยวกับ Mercurial

ฉันเห็นด้วยกับความคิดเห็นข้างต้นเกี่ยวกับHginitมันทำให้ Mercurial เข้าใจได้ง่ายขึ้นมาก เขียนได้ดีและเข้าใจง่ายมาก ไม่มีเอกสารใดที่เขียนขึ้นสำหรับ git เข้ามาใกล้ สำหรับฉันค้นหาสิ่งที่เขียนโดย Scott Chacone (ผู้เขียนเอกสาร / หนังสือเกี่ยวกับคอมไพล์ส่วนใหญ่) อย่างสับสนโดยเฉพาะอย่างยิ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.