อะไรคือความแตกต่างระหว่างคอมไพล์add
, push
และcommit
?
สับสนเล็กน้อยที่มาจาก SVN โดยที่ "อัปเดต" จะ "เพิ่ม" สิ่งต่างๆและคอมมิตทำ "พุช" และจะ "เพิ่ม" ด้วย
มีฟังก์ชันที่แตกต่างกันทั้งหมดภายในคอมไพล์ หวังว่าจะได้รับคำอธิบายจากประสบการณ์ของคุณ
อะไรคือความแตกต่างระหว่างคอมไพล์add
, push
และcommit
?
สับสนเล็กน้อยที่มาจาก SVN โดยที่ "อัปเดต" จะ "เพิ่ม" สิ่งต่างๆและคอมมิตทำ "พุช" และจะ "เพิ่ม" ด้วย
มีฟังก์ชันที่แตกต่างกันทั้งหมดภายในคอมไพล์ หวังว่าจะได้รับคำอธิบายจากประสบการณ์ของคุณ
คำตอบ:
git add
เพิ่มการแก้ไขไฟล์ของคุณไปยังคิวที่จะมุ่งมั่นในภายหลัง ไฟล์ไม่ถูกคอมมิต
git commit
คอมมิตไฟล์ที่ถูกเพิ่มและสร้างการแก้ไขใหม่ด้วยบันทึก ... หากคุณไม่ได้เพิ่มไฟล์ใด ๆ คอมไพล์จะไม่คอมมิตอะไรเลย คุณสามารถรวมการกระทำทั้งสองเข้าด้วยกันได้git commit -a
git push
พุชการเปลี่ยนแปลงของคุณไปยังที่เก็บระยะไกล
ตัวเลขจากแผ่นโกงคอมไพล์นี้ให้แนวคิดที่ดีเกี่ยวกับขั้นตอนการทำงาน
git add
ไม่ได้อยู่ในรูปเนื่องจากวิธีที่แนะนำในการคอมมิตคือการรวมกันgit commit -a
แต่คุณสามารถเพิ่ม a git add
ในบล็อกการเปลี่ยนแปลงเพื่อทำความเข้าใจโฟลว์ได้
ประการสุดท้ายสาเหตุpush
ที่คำสั่งแยกกันเป็นเพราะgit
ปรัชญา git
เป็นระบบการกำหนดเวอร์ชันแบบกระจายและไดเร็กทอรีการทำงานภายในของคุณคือที่เก็บของคุณ! การเปลี่ยนแปลงทั้งหมดที่คุณกระทำจะสะท้อนและบันทึกทันที push
ใช้เพื่ออัปเดต repo ระยะไกลเท่านั้น (ซึ่งคุณอาจแชร์กับผู้อื่น) เมื่อคุณทำอะไรก็ตามที่คุณกำลังทำอยู่ นี่เป็นวิธีที่เป็นระเบียบในการทำงานและบันทึกการเปลี่ยนแปลงในเครื่อง (โดยไม่มีค่าใช้จ่ายเครือข่าย) และอัปเดตเมื่อคุณต้องการเท่านั้นแทนที่จะเป็นทุกครั้งที่คอมมิต สิ่งนี้ส่งผลทางอ้อมในการคอมมิชชัน / การแยกสาขาได้ง่ายขึ้น ฯลฯ (ทำไมไม่ล่ะคุณเสียค่าใช้จ่ายอะไรบ้าง) ซึ่งนำไปสู่การประหยัดคะแนนมากขึ้นโดยไม่ต้องยุ่งกับที่เก็บ
git add
เลือกการเปลี่ยนแปลง
git commit
บันทึกการเปลี่ยนแปลงในท้องถิ่น
git push
แบ่งปันการเปลี่ยนแปลง
git add
เพิ่มไฟล์ลงในดัชนี Git ซึ่งเป็นพื้นที่จัดเตรียมสำหรับวัตถุที่เตรียมที่จะคอมมิตgit commit
คอมมิตไฟล์ในดัชนีไปยังที่เก็บgit commit -a
เป็นทางลัดในการเพิ่มไฟล์ติดตามที่แก้ไขทั้งหมดลงในดัชนีก่อนgit push
ส่งการเปลี่ยนแปลงที่รอดำเนินการทั้งหมดไปยังที่เก็บระยะไกลซึ่งมีการแมปสาขาของคุณ (เช่นบน GitHub)เพื่อให้เข้าใจ Git คุณจะต้องใช้ความพยายามมากกว่าเพียงแค่ดูเอกสาร แต่ก็คุ้มค่าแน่นอน อย่าพยายามแมปคำสั่ง Git โดยตรงกับ Subversion เนื่องจากส่วนใหญ่ไม่มีคู่กันโดยตรง
ฉันสับสนเกี่ยวกับสิ่งที่ 'เพิ่ม' จริงๆ ฉันเพิ่งอ่านย่อหน้าที่กระจ่างแจ้งจากหนังสือ Git Pro ที่ฉันต้องการเพิ่มที่นี่เพราะมันให้ความกระจ่างในสิ่งต่างๆ
“ ปรากฎว่า Git จัดลำดับไฟล์ให้เหมือนกับตอนที่คุณรันคำสั่ง git add หากคุณยอมรับในตอนนี้เวอร์ชันของ benchmarks.rb เหมือนเดิมเมื่อคุณรันคำสั่ง git add ครั้งสุดท้ายคือวิธีที่จะเข้าสู่คอมมิตไม่ใช่เวอร์ชันของไฟล์ตามที่ปรากฏในไดเร็กทอรีการทำงานของคุณเมื่อคุณรันคอมมิต หากคุณแก้ไขไฟล์หลังจากที่คุณเรียกใช้ git add คุณจะต้องเรียกใช้ git add อีกครั้งเพื่อจัดลำดับไฟล์เวอร์ชันล่าสุด:”
ตัดตอนมาจาก: Chacon, Scott “ Pro Git” สปริงเกอร์, 2009-08-19T00: 00: 00 + 00: 00. iBooks เนื้อหานี้อาจได้รับการคุ้มครองโดยลิขสิทธิ์
add บอกให้คอมไพล์เริ่มติดตามไฟล์
กระทำยอมรับการเปลี่ยนแปลงปัจจุบันของคุณบนที่เก็บในเครื่องของคุณ
push ผลักดัน repo ในพื้นที่ให้คุณ
pdf ที่ดีมากเกี่ยวกับความลับของ GIT มากมาย
Addเหมือนกับการเพิ่มของ svn (บางครั้งใช้เพื่อทำเครื่องหมายไฟล์ที่แก้ไขแล้ว)
Commitก็เหมือนกับ svn แต่คอมมิตการเปลี่ยนแปลงในที่เก็บในเครื่องของคุณ
add -in git ใช้เพื่อบอกคอมไพล์ว่าเราต้องการคอมมิตไฟล์ใดโดยจะนำไฟล์ไปไว้ในพื้นที่จัดเตรียม
คอมมิต - ในคอมไพล์ใช้เพื่อบันทึกไฟล์ลงในเครื่องภายในดังนั้นหากเราทำการเปลี่ยนแปลงใด ๆ หรือแม้แต่ลบไฟล์เรายังสามารถกู้คืนไฟล์ที่มุ่งมั่นของเราได้
ผลักดัน - หากเราส่งไฟล์ของเราบนเครื่องท้องถิ่นไฟล์เหล่านั้นจะยังคงสูญหายได้หากเครื่องในพื้นที่ของเราสูญหายได้รับความเสียหาย ฯลฯ เพื่อให้ไฟล์ของเราปลอดภัยหรือเพื่อแบ่งปันไฟล์ของเราโดยปกติเราต้องการเก็บไฟล์ของเราไว้บนรีโมท ที่เก็บเช่น Github ในการบันทึกที่เก็บระยะไกลเราใช้ push
ตัวอย่างการจัดเตรียมไฟล์ชื่อ index.html git add index.html
การคอมมิตไฟล์ที่เป็น staged git คอมมิต -m 'name of your คอมมิต'
การพุชไฟล์ไปยัง Github git push origin master