ทำไมต้องเรียนรู้ git เมื่อมีแอพ GUI สำหรับ GitHub


84

เนื่องจาก GitHub ให้แอป GUI สำหรับทั้งMacและWindowsประโยชน์ของการเรียนรู้การใช้ git จากบรรทัดคำสั่งคืออะไร

ขณะนี้ฉันกำลังใช้แอพ mac ของพวกเขาเพื่ออัปเดตที่เก็บของฉันและจนถึงตอนนี้มันครอบคลุมความต้องการของฉันแล้ว ฉันจะพลาดอะไรได้บ้าง


15
อย่าลืม gitk ซึ่งเป็น gui สำหรับ Linux
DeveloperDon

14
คุณไม่มีสคริปต์ทั้งหมด
SK-logic

3
@Kalhae ใช่มีเหตุผลที่ดีมากว่าทำไมแอป GUI ส่วนใหญ่จึงไม่สามารถใช้สคริปต์ได้ และคนที่เขียนด้วยสคริปต์นั้นแย่มาก (คิดว่า COM และสิ่งที่น่ารังเกียจที่คล้ายกัน)
SK-logic

2
@Kalhaoux ไม่มีเหตุผลไม่ใช่คุณภาพ มันยากจริงๆที่จะทำให้แอพพลิเคชัน GUI ล้วนเป็นสคริปต์ได้ วิธีการที่สมเหตุสมผลทั้งหมดที่ฉันรู้คือสร้างขึ้นโดยการแนะนำรูปแบบของอินเตอร์เฟสบรรทัดคำสั่ง - ไม่ว่าจะเป็น Unix-style CLI หรือภาษาคำสั่งแบบข้อความหรือโปรโตคอลไบนารี่ซึ่งเป็นสิ่งเดียวกับภาษาคำสั่ง ดู COM แต่วิธีที่ดีที่สุดคือการมีแกนกลางร่วมกันซึ่งสามารถเข้าถึงได้ผ่านเครื่องมือ CLI ต่างๆและจาก GUI หลังสามารถสร้างขึ้นบน CLI เพื่อความเรียบง่าย
SK-logic

13
คุณทำไม่ได้ ในทำนองเดียวกันคุณไม่จำเป็นต้องเรียนรู้ HTML / CSS เพราะ Dreamweaver และ Frontpage (หรืออะไรก็ตามที่มีอยู่ตอนนี้) มีอยู่ บางทีมันอาจจะเหมาะกับคุณในบางสิ่ง แต่เมื่อไม่มีคนรู้ว่ามันใช้งานได้จริง
DorkRawk

คำตอบ:


116

ฉันคิดว่าคำถามนี้เป็นเพียงกรณีพิเศษของ "ทำไมฉันจึงควรเรียนรู้ CLI ใด ๆ ที่มีทางเลือก GUI อยู่?" ฉันสงสัยว่าคำถามหลังนั้นเกี่ยวกับอายุเท่า GUI และฉันคิดว่ามีหลายครั้งที่จะตอบคำถามในช่วงหลายปีที่ผ่านมา ฉันจะพยายามที่จะ Bumble ทางของฉันผ่านคำตอบของตัวเองกับคำถามนี้ แต่โอนีลสตีเฟนสันก้องสิ่งที่ฉันเห็นด้วยกับการเป็น 'คำตอบที่ดีที่สุด' กว่าสิบปีที่ผ่านมาในการเขียนเรียงความโดดเด่นของเขาในการเริ่มต้น ... คือบรรทัดคำสั่ง

ในขณะที่เรียงความสัมผัสกับแง่มุมต่าง ๆ ของการคำนวณและแม้กระทั่ง Stephenson เองก็คิดว่าตอนนี้มันล้าสมัยไปมาก แต่เรียงความอธิบายว่าอะไร CLIs เป็น GUI ที่ดีกว่าในลักษณะที่เปลี่ยนแปลงชีวิตของฉันอย่างแท้จริง เป็นการอ่านที่ยาว (ประมาณ 40 หน้า) แต่ฉันไม่สามารถแนะนำให้คนที่ถามคำถามอย่างที่คุณถามได้ที่นี่

สุดท้ายแม้ว่าฉันต้องการตอบ CLI ใด ๆ เทียบกับการจัดเรียง GUI gitของคำถามในทำนองเดียวกันผมคิดว่าคำตอบของฉันถือเป็นจริงโดยเฉพาะอย่างยิ่งกับคำถามของคุณโดยเฉพาะตั้งแต่สิ่งคอมพิวเตอร์ทั้งหมดที่คุณเลือกที่จะถามเกี่ยวกับ gitเป็นเครื่องมือล่าสุดที่อยู่ในรายการเครื่องมือคอมพิวเตอร์ที่มีความยาวไม่เกินจริงซึ่งมีคุณค่าอย่างแท้จริงในการเปรียบเทียบอุปมาอุปมัยตามที่อธิบายไว้ในบทความของสตีเฟนสัน gitเช่นเดียวกับสิ่งอื่น ๆ ที่ Unix-ish เป็นเหตุผลที่จะรู้ CLIs ทั้งหมดในตัวเอง บางครั้งแม้จะมี'พอร์ซเลน' ที่ผิดปกติของมัน; บางครั้งเพราะมัน

ดังนั้นคุณสามารถทำงานได้อย่างมีประสิทธิภาพด้วย GUI ของ github ทั้งสำหรับ OSX หรือแม้แต่บนเว็บไซต์ของพวกเขา ใช่มันค่อนข้างเงาจริง ๆ ฉันใช้คุณสมบัติของเว็บไซต์บ่อยครั้ง แต่ไม่คุณจะไม่มีวันรู้สึกเหมือนพระเจ้าเหมือนสีชมพูที่ถูกต้องของคุณแขวนอยู่เหนือgit filter-branchคำสั่งที่บ้าสำหรับอิออนหรือสองคน ถ้าฉันต้องเก็บอะไรไว้จากประสบการณ์การใช้คอมพิวเตอร์ - ความท้าทายทางจิตมิตรภาพที่เกิดขึ้นในศูนย์ข้อมูลที่ 2AM ซึ่งเป็นบันไดที่ไม่มีขีด จำกัด ของความสามารถในการปีนขึ้นไปสัมผัสชีวิตของผู้ใช้และครอง PBs ของข้อมูลที่มีค่า งานและชีวิตที่สุขสบาย - รักษาเพียงสิ่งเดียว - นั่นคือความรู้สึกของพระเจ้า


5
ลิงก์เข้าถึงได้ง่ายขึ้นในตอนเริ่มต้น ... เป็นบรรทัดคำสั่ง: pauillac.inria.fr/~weis/info/commandline.html
Elias Zamaria

1
Re: ล้าสมัย: นั่นจะเป็นส่วน "BeOS as Batmobile" ใช่ไหม?
naught101

2
Garrett Birkel ได้อัปเดตเรียงความ "เริ่มต้น ... เป็นบรรทัดคำสั่ง" โดยการกระจายความคิดเห็นของเขากับเรียงความดั้งเดิมของ Neal Stephenson คุณสามารถอ่านเกี่ยวกับเรื่องนี้ที่นี่
ฉันชอบรหัส

2
... ใช่ใครต้องการ CLI เมื่อคุณสามารถสร้างส่วนต่อประสาน GUI โดยใช้ Visual Basic เหมาะอย่างยิ่งสำหรับสิ่งต่างๆเช่นการติดตามที่อยู่ IP
เฮ้

3
ฉันไม่ได้บอกว่า 'เก่ากว่าดีกว่า' ฉันแนะนำ CLIs ว่า (สำหรับแฮ็กเกอร์หลายคนใช้งานได้) เหนือกว่า GUI CLIs นั้นเหนือกว่าสวิตช์แบบไบนารีและสายแพทช์ นี่คือเหตุผลที่ฉันใช้ CLIs บทความไม่ได้ "พิสูจน์" เพราะมันเป็น "ในบทความ" มันเป็นร้อยแก้วที่มีข้อโต้แย้งที่ระบุสิ่งที่ฉันชอบเกี่ยวกับ CLIs มันเก่า แต่ UNIX ก็เช่นนั้น อย่างไรก็ตามฉันทำงานกับ Google และนักพัฒนาส่วนใหญ่รอบตัวฉันใช้สภาพแวดล้อมการพัฒนาแบบอิง CLI (แต่ฉันไม่สามารถพูดกับ Google โดยรวมได้)
Yaniv Aknin

108

หากความต้องการทั้งหมดของคุณครอบคลุมน่ากลัวไม่จำเป็นต้องเจาะลึกเข้าไปในคอมไพล์เวลาของคุณจะดีขึ้นในการเรียนรู้สิ่งที่คุณต้องการ

git เป็นเพียงเครื่องมือเมื่อคุณต้องทำสิ่งที่คุณไม่สามารถทำได้ด้วยแอพ GUI คุณจะรู้ เพียงจำไว้ว่า github! = git


1
ฉันเห็นด้วยกับคุณ แต่อาจมีบางสิ่งที่ฉันไม่ทราบในขณะนี้ซึ่งอาจเป็นประโยชน์กับฉันหากฉันตระหนักถึงพวกเขา ไม่มี?
histelheim

28
@AronLindberg ใช่อาจมี แต่คุณกำลังถามคำถามที่ผิดสิ่งที่คุณควรใช้เวลาในการตรวจสอบคือขั้นตอนการทำงานและแนวคิดของคอมไพล์ไม่ใช่บรรทัดคำสั่ง แม้ว่าบางคนจะแสดงรายการฟังก์ชันการใช้งานทั้งหมดที่แอพ GUI หายไปคุณจะรู้ได้อย่างไรว่าคุณต้องการมันจริง ๆ ? (และนี่คือสิ่งที่คุณสามารถทำได้เองอย่างง่ายดายเพียงแค่ดูเอกสารของ git)
yannis

//, CLI จะบังคับให้คุณคิดเกี่ยวกับเวิร์กโฟลว์และแนวคิดอีกเล็กน้อยเนื่องจากองค์กรตัวเลือกและการไหลทั้งหมดจะเกิดขึ้นในหัวของคุณไม่ใช่ในตัวช่วยสร้างและเมนูแบบเลื่อนลง
Nathan Basanese

57

คุณลักษณะส่วนใหญ่ของ CLI-only ส่วนใหญ่จะเข้ามาเล่นเมื่อคุณบังเอิญเก็บที่เก็บของคุณเข้าสู่สถานะแปลก ๆ และต้องการแก้ไข ในทางกลับกันวิธีที่พบได้บ่อยที่สุดในการทำให้ repo ของคุณอยู่ในสภาวะแปลก ๆ คือการใช้คุณสมบัติขั้นสูงที่คุณไม่เข้าใจ หากคุณยึดติดกับสิ่งที่ GUI ให้มานั่นจะครอบคลุมความต้องการของคุณ 99%

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


คำตอบที่ดีที่สุดแน่นอนที่นี่ ไม่ใช่ blah-blah-blah-ปรัชญา
john cj

//, นี่เป็นความคิดแรกของฉันและถึงแม้ว่าคำตอบเชิงปรัชญาจะดึงดูดฉัน แต่เหตุผลหลักที่ฉันใช้ CLIs ก็เพราะว่าพวกเขามีเหตุผลที่ง่ายกว่ามากเกี่ยวกับสร้างมาตรฐานและสื่อสารกับผู้อื่นผ่านข้อความ เราอาจไม่รู้วิธีวาด แต่เราทุกคนรู้วิธีพิมพ์
นาธาน Basanese

9

แอปพลิเคชัน GUI พึ่งพาการโต้ตอบด้วยตนเองเพื่อดำเนินการกับพฤติกรรมที่ซับซ้อน สิ่งนี้ยอดเยี่ยมสำหรับการตั้งค่าโครงการและพัฒนาสิ่งใหม่

ประโยชน์ของ Command-Line Interface (CLI) มาจากความสามารถในการสร้างสคริปต์ที่กำหนดไว้ล่วงหน้าซึ่งสามารถเป็นแบบอัตโนมัติ GUI ของ GitHub ทั้งหมดนั้นคือกราฟิกและปุ่มแฟนซีที่เรียกว่า git CLI

สิ่งที่แอป GUI จะไม่ทำเพื่อคุณจะอัปเดต trunk อัตโนมัติของ repo บนเซิร์ฟเวอร์ทุกวันเวลา 1:30 น. แต่งาน cron ที่เรียก git CLI นั้นเป็นวิธีที่ง่ายมากในการตั้งค่า

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


กระโปรงหลังรถ? ฉันคิดว่าคุณหมายถึงเจ้านาย
jpmc26

@ jpmc26 ฉันเขียนสิ่งนี้เมื่อฉันยังใหม่กับคอมไพล์ที่มาจาก SVN, ให้อภัยคำศัพท์
zzzzBov

6

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


+1; และง่ายขึ้น / เข้าถึงได้มากขึ้นก็คือการใช้โอกาสมากขึ้นผมจะใช้เมื่อในเวลาที่เหมาะสม (แตะแตะแตะคอมไพล์กระทำประปา Tap Tap) แทน (Tap Tap เปิดตัว GUI คอมไพล์กระทำ 'ปลายสัปดาห์กระทำ')
Abe

5

เมื่อเร็ว ๆ นี้ฉันต้องขุดลงไปใน Git จริงๆเพื่อให้สามารถช่วยเหลือการโยกย้าย SVN-to-Git และสิ่งที่ฉันเรียนรู้คือเครื่องมือบรรทัดคำสั่ง Git ไม่ใช่ส่วนที่ซับซ้อนในการเรียนรู้

แนวคิดและแนวคิดเบื้องหลัง Git นั้นเป็นส่วนที่ซับซ้อน (และนั่นไม่ใช่เพราะพวกเขาได้รับการออกแบบมาไม่ดี แต่เป็นเพราะพวกเขาเป็นคนต่างชาติกับคนส่วนใหญ่ที่มาจาก VCS ที่รวมศูนย์ไว้ที่อื่น)

เมื่อฉันเข้าใจแนวคิดแล้วข้อความสั่งบรรทัดคำสั่งจริงกลายเป็นเรื่องง่าย นั่นหมายความว่า UI ไม่ได้ช่วยให้เข้าใจ Git (ยกเว้นการดำเนินการที่ง่ายที่สุด)


3
ที่จริงแล้วแนวคิดเบื้องหลังgitนั้นเรียบง่ายจนผู้คนไม่สามารถเข้าใจได้ - พวกเขากำลังมองหาบางสิ่งที่ยากขึ้น
gahooa

4

การรู้จัก CLI นั้นมีประโยชน์สำหรับเมื่อ (ไม่ใช่ถ้า) คุณอยู่ในสภาพแวดล้อมบางอย่างที่คุณไม่สามารถใช้แอพ GUI ได้

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


ประโยคหนึ่งคำตอบนั้นไม่ค่อยมีคุณค่ามากนัก คุณช่วยขยายคำตอบของคุณได้ไหม?
วอลเตอร์

//, เขาคือ @grumpasaurus สิ่งที่คุณคาดหวังโคลง
นาธาน Basanese

2

เหตุผลหนึ่งในการเรียนรู้คอมไพล์บรรทัดคำสั่งคือเอกสารส่วนใหญ่เขียนขึ้นสำหรับสภาพแวดล้อมนั้น นอกจากนี้หากคุณถามคำถาม: "ฉันจะทำ X กับ git ได้อย่างไร" โอกาสที่คำตอบจะมีคำสั่งบรรทัดคำสั่ง


1

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

ตัวอย่างเช่นนี่คือบางสิ่งที่ฉันยังไม่ได้คิดว่าจะทำอย่างไรโดยใช้แอปพลิเคชัน GitHub (สิ่งอื่นที่ควรทราบคือ GUI แต่ละตัวมีกราฟการเรียนรู้ด้วย)

  • การลดการกระทำ
  • กด / ดึง / ดึงข้อมูลทีละรายการ (ใน GitHub จะถูกจัดกลุ่มเป็นคำสั่ง "ซิงค์" เดียวซึ่งอาจทำให้เกิดปัญหาบางครั้ง)
  • การแก้ไขความมุ่งมั่น

สุดท้าย CLIs อนุญาตให้ผู้ใช้ใช้เครื่องมือเหล่านี้เมื่อทำการสคริปต์


จุดสุดท้ายนั้นค่อนข้างสำคัญสำหรับฉัน สร้างสคริปต์เครื่องมือและเซิร์ฟเวอร์ไม่ค่อยมีคนใช้ gui สำหรับการควบคุมเวอร์ชันการเข้าถึง gui หนึ่งต้องใช้บรรทัดคำสั่งแทน

0

ฉันไม่รู้เกี่ยวกับ GitHub สำหรับ Mac แต่แอพ Windows ทำงานเฉพาะงานที่พบบ่อยที่สุดเท่านั้น - เพิ่มกระทำผลักดึงและอื่น ๆ งานที่ซับซ้อนมากขึ้นเช่นgit merge --no-ffต้องทำจากบรรทัดคำสั่ง

นอกจากนี้ยังมีกรณีที่มีคอมไพล์เมื่อ GUI ไม่พร้อมใช้งานเช่นเมื่อ SSHing ไปยังเซิร์ฟเวอร์ระยะไกล

แต่อย่างอื่นถ้า GUI ให้ทุกสิ่งที่คุณต้องการแล้วการเรียนรู้บรรทัดคำสั่งอาจเสียเวลา งานของฉันใช้ TortoiseSVN ในสภาพแวดล้อมแบบ Windows เท่านั้นและฉันไม่ต้องแตะบรรทัดคำสั่ง SVN แม้แต่ครั้งเดียว


0

ฉันเพิ่งเรียนรู้กรณีหนึ่งที่ CLI สามารถทำได้ดีกว่า GUI เพื่อแสดงสิ่งนี้ฉันได้ยกตัวอย่างจากการควบคุมคอมไพล์หนังสือสำหรับทุกคน

เมื่อคุณต้องการแชร์ผ่านอินทราเน็ตคุณสามารถใช้:

  1. เซิร์ฟเวอร์ Gitolite
  2. ไดเร็กทอรีการแบ่งใช้ทั่วไปที่มีที่เก็บเปลือย

ดูขั้นตอนในการสร้าง repo เปล่า

การสร้างที่เก็บเปล่าในโหมด CLI

คำสั่งสำหรับการสร้างพื้นที่เก็บข้อมูลเปล่าจะเหมือนกับที่คุณใช้ในการโคลนที่เก็บยกเว้นพารามิเตอร์ --bare ซึ่งสร้างความแตกต่างทั้งหมด git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench การเรียกใช้รหัสก่อนหน้าในคอนโซลของคุณควรสร้างโคลนเปล่าของที่เก็บ Workbench ของเราในโฟลเดอร์ที่ใช้ร่วมกันทั่วไปของคุณที่เรียกว่า generic_share

การสร้างพื้นที่เก็บข้อมูลเปล่าในโหมด GUI

การสร้างโคลนเปล่า ๆ จากแหล่งเก็บข้อมูลที่มีอยู่แล้วโดยใช้ GUI เป็นกระบวนการที่ง่าย สิ่งที่คุณต้องทำคือ:

  1. คัดลอกไดเรกทอรี. git จากพื้นที่เก็บข้อมูลที่มีอยู่และวางด้วย different_name.git (ชื่อใดก็ตามที่คุณต้องการให้กับพื้นที่เก็บข้อมูลใหม่ของคุณ) นอกพื้นที่เก็บข้อมูล ในกรณีของเราเราไม่มี repo ที่เรียกว่า Workbench ที่ C: \ Users \ raviepic3 \ Desktop \ ข้างในซึ่งเรามี content.docx และตอนนี้ฉันต้องการสร้างพื้นที่เก็บข้อมูลเปลือยใหม่จากนี้โดยใช้ GUI ฉันจะคัดลอก C: \ Users \ raviepic3 \ Desktop \ Workbench.git และวางเป็น C: \ generic_share \ Bare_Workbench.git

  2. เปิด config fileด้านใน Bare_Workbench.git ด้วยโปรแกรมแก้ไขข้อความและค้นหาบรรทัดที่เขียน bare = falseและแทนที่สตริงเท็จด้วยความจริง

  3. บันทึกและออก.

ใน GUI คุณต้องคลิกหลายครั้งและจำไฟล์ที่จะแก้ไข ใน CLI คำสั่งแบบง่าย ๆ เพียงคำสั่งเดียวก็มีให้สำหรับคุณ

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