ในแบบฝึกหัด Git ที่ฉันกำลังทำgit commit
อยู่นั้นใช้เพื่อจัดเก็บการเปลี่ยนแปลงที่คุณทำ
ตอนนี้git push
ใช้อะไร?
ในแบบฝึกหัด Git ที่ฉันกำลังทำgit commit
อยู่นั้นใช้เพื่อจัดเก็บการเปลี่ยนแปลงที่คุณทำ
ตอนนี้git push
ใช้อะไร?
คำตอบ:
โดยทั่วไปgit commit
" บันทึกการเปลี่ยนแปลงที่เก็บ " ในขณะที่git push
" อัพเดตการอ้างอิงระยะไกลพร้อมกับวัตถุที่เกี่ยวข้อง " ดังนั้นอันแรกจะถูกใช้ในการเชื่อมต่อกับที่เก็บในเครื่องของคุณในขณะที่อันหลังถูกใช้เพื่อโต้ตอบกับที่เก็บระยะไกล
นี่เป็นภาพสวย ๆ จากOliver Steeleที่อธิบายโมเดล git และคำสั่ง:
อ่านเพิ่มเติมเกี่ยวกับgit push
และgit pull
บนGitReady.com (บทความที่ฉันอ้างถึงก่อน)
git push
การทำงานกับ ในความเป็นจริงปลายทางของgit push
สามารถเป็นที่เก็บ git ใด ๆ อาจอยู่ในฮาร์ดไดรฟ์ในเครื่องของคุณในไดเรกทอรีอื่น ( git remote add clone ~/proj/clone.git; git push clone master
หรือgit push ~/proj/clone.git master
ตัวอย่าง) หรือที่เก็บ git ที่โฮสต์ของคุณให้บริการ
กระทำ : การเพิ่มการเปลี่ยนแปลงในพื้นที่เก็บข้อมูลท้องถิ่น
push : เพื่อโอนการกระทำล่าสุดไปยังเซิร์ฟเวอร์ระยะไกล
โดยทั่วไปคอมไพล์คอมมิททำให้การเปลี่ยนแปลงของคุณเป็น repo ท้องถิ่นของคุณในขณะที่ git push ส่งการเปลี่ยนแปลงของคุณไปยังตำแหน่งระยะไกล
git push
อัปโหลดไฟล์ที่อัปเดตจริงหรือบางพิเศษ "ต่าง" แฟ้ม?
git push
ใช้เพื่อเพิ่มการกระทำที่คุณได้ทำไว้ในที่เก็บข้อมูลโลคัลไปยังรีโมต - git pull
ซึ่งอนุญาตให้ผู้คนทำงานร่วมกันได้
เนื่องจาก git เป็นระบบควบคุมเวอร์ชันแบบกระจายความแตกต่างคือการกระทำจะส่งการเปลี่ยนแปลงไปยังที่เก็บในเครื่องของคุณ
กระทำ : Snapshot | Changeset | ประวัติ รุ่น | 'บันทึกเป็นของพื้นที่เก็บข้อมูล พื้นที่เก็บข้อมูล Git = ชุด (ต้นไม้) ของกระทำ
ที่เก็บในเครื่อง: ที่เก็บในคอมพิวเตอร์ของคุณ
ที่เก็บข้อมูลระยะไกล : ที่เก็บข้อมูลบนเซิร์ฟเวอร์ ( Github )
git commit
: ผนวกใหม่กระทำ (last กระทำ + ฉากปรับเปลี่ยน) เพื่อท้องถิ่นพื้นที่เก็บข้อมูล (ความมุ่งมั่นทั้งหมดจะถูกเก็บไว้ใน/.git
)
git push
, git pull
: ซิงค์ท้องถิ่นพื้นที่เก็บข้อมูลที่เกี่ยวข้องกับ ระยะไกลพื้นที่เก็บข้อมูล push
- นำการเปลี่ยนแปลงจากท้องถิ่นเข้ามาในระยะไกล , pull
- นำการเปลี่ยนแปลงจากระยะไกลเข้ามาในท้องถิ่น
git commit
บันทึกการเปลี่ยนแปลงของคุณไปยังท้องถิ่นที่เก็บ
git push
อัพเดตที่เก็บรีโมตด้วยการเปลี่ยนแปลงโลคัลของคุณ
สามสิ่งที่ควรทราบ:
1) Working Directory ----- โฟลเดอร์ที่มีไฟล์รหัสของเรา
2) Local Repository ------ นี่คือระบบของเรา เมื่อเราใช้คำสั่ง COMMIT เป็นครั้งแรกจะมีการสร้างที่เก็บข้อมูลภายในเครื่องนี้ ในสถานที่เดียวกันซึ่งเป็นไดเรกทอรีทำงานของเรา
ไฟล์ Checkit (.git) จะถูกสร้างขึ้น
หลังจากนั้นเมื่อเราทำการกระทำสิ่งนี้จะเก็บการเปลี่ยนแปลงที่เราทำไว้ในไฟล์ของ Working Directory ไปยัง Local Repository (.git)
3) พื้นที่เก็บข้อมูลระยะไกล ----- นี้ตั้งอยู่นอกระบบของเราเช่นบนเซิร์ฟเวอร์ที่ตั้งอยู่ที่ใดในโลก ชอบ GitHub เมื่อเราสร้างคำสั่ง PUSH รหัสจากที่เก็บในพื้นที่ของเราจะถูกเก็บไว้ใน Remote Repository นี้
เพียงแค่ต้องการเพิ่มจุดต่อไปนี้:
ที่นั่นไม่สามารถผลักดันจนกว่าคุณจะยอมรับในขณะที่เราใช้git push
ในการผลักดันการกระทำในสาขาท้องถิ่นของคุณไปยังที่เก็บระยะไกล
git push
คำสั่งเวลาสองขัดแย้ง:
ชื่อรีโมตตัวอย่างเช่นorigin
ชื่อสาขาตัวอย่างเช่นmaster
ตัวอย่างเช่น:
git push <REMOTENAME> <BRANCHNAME>
git push origin master
การเปรียบเทียบที่หยาบมาก: ถ้าเราเปรียบเทียบgit commit
กับการบันทึกไฟล์ที่แก้ไขแล้วgit push
จะเป็นการคัดลอกไฟล์นั้นไปยังตำแหน่งอื่น
โปรดอย่าถอดสิ่งนี้ออกจากบริบทนี้ - การคอมมิทและการกดไม่เหมือนกับการบันทึกไฟล์ที่ถูกแก้ไขแล้วทำการคัดลอก ที่กล่าวว่าควรถือเพื่อประโยชน์ในการเปรียบเทียบ
เป็นการง่ายกว่าที่จะเข้าใจการใช้คำสั่ง git add
และcommit
ถ้าคุณนึกภาพล็อกไฟล์ที่เก็บรักษาไว้ในที่เก็บของคุณบน Github ล็อกไฟล์ของโครงการทั่วไปสำหรับฉันอาจมีลักษณะดังนี้:
---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2
Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------
---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on
ฉันมักจะเริ่มต้นวันด้วยการgit pull
ร้องขอและจบลงด้วยการgit push
ร้องขอ ดังนั้นทุกอย่างภายในบันทึกของวันนั้นสอดคล้องกับสิ่งที่เกิดขึ้นระหว่างพวกเขา ในแต่ละวันมีงานลอจิกอย่างน้อยหนึ่งอย่างที่ฉันทำซึ่งต้องเปลี่ยนไฟล์ไม่กี่ไฟล์ ไฟล์ที่แก้ไขระหว่างงานนั้นจะแสดงรายการไว้ในดัชนี
แต่ละภารกิจย่อยเหล่านี้ (ภารกิจ A และภารกิจ B ที่นี่) เป็นภารกิจเดี่ยว git add
คำสั่งเพิ่มไฟล์ไป 'ดัชนีของไฟล์ที่มีการเปลี่ยนแปลงรายชื่อ กระบวนการนี้เรียกว่าการจัดเตรียมและในความเป็นจริงบันทึกการเปลี่ยนแปลงไฟล์และการเปลี่ยนแปลงที่ดำเนินการ git commit
บันทึกคำสั่ง / สรุปการเปลี่ยนแปลงและรายการดัชนีที่สอดคล้องกันพร้อมกับข้อความที่กำหนดเองซึ่งอาจจะใช้สำหรับการอ้างอิงในภายหลัง
โปรดจำไว้ว่าคุณยังคงเปลี่ยนเฉพาะที่เก็บในเครื่องของคุณและไม่เปลี่ยนเป็นที่เก็บใน Github หลังจากนี้เฉพาะเมื่อคุณทำการgit push
เปลี่ยนแปลงที่บันทึกไว้เหล่านี้พร้อมกับไฟล์ดัชนีของคุณสำหรับแต่ละการกระทำจะได้รับการบันทึกไว้ในที่เก็บหลัก (บน Github)
ตัวอย่างเพื่อให้ได้รายการที่สองในล็อกไฟล์จินตภาพนั้นฉันก็จะทำ:
git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push
สรุปgit add
และgit commit
ช่วยให้คุณสามารถแยกการเปลี่ยนแปลงไปยังที่เก็บข้อมูลหลักเป็นการเปลี่ยนแปลงเชิงตรรกะย่อยอย่างเป็นระบบ เช่นเดียวกับคำตอบและความคิดเห็นอื่น ๆ ที่ชี้ให้เห็นว่ามีประโยชน์หลายประการสำหรับพวกเขา อย่างไรก็ตามนี่เป็นหนึ่งในประเพณีที่ใช้กันมากที่สุดและหลักการขับรถที่อยู่เบื้องหลัง Git เป็นระบบควบคุมการแก้ไขแบบหลายขั้นตอนซึ่งแตกต่างจากคนอื่น ๆ ที่นิยมเช่น Svn
คอมมิท git ไม่ได้ทำอะไรนอกจากบันทึกการเปลี่ยนแปลงของเราอย่างเป็นทางการสำหรับทุกคอมมิทที่เราส่งข้อความคอมมิทเมื่อเราทำคอมมิชชันเราสามารถผลักมันไปที่รีโมตเพื่อดูการเปลี่ยนแปลงของเราทั่วโลก
ซึ่งหมายความว่าเราสามารถทำคอมมิชชันหลายอย่างก่อนที่จะผลักดันไปยังรีโมต (เราสามารถดูรายการการคอมมิทที่เกิดขึ้นและข้อความด้วย) คอมไพล์บันทึกแต่ละคอมมิทด้วยรหัสกระทำซึ่งเป็นรหัส 40 หลัก
และฉันใช้ git push เฉพาะเมื่อฉันต้องการเห็นการเปลี่ยนแปลงของฉันในระยะไกล (หลังจากนั้นฉันจะตรวจสอบว่ารหัสของฉันทำงานเป็นเจนกินส์หรือไม่)
โดยทั่วไปคอมไพล์คอมมิททำให้การเปลี่ยนแปลงของคุณเป็น repo ท้องถิ่นของคุณในขณะที่ git push ส่งการเปลี่ยนแปลงของคุณไปยังตำแหน่งระยะไกล เนื่องจาก git เป็นระบบควบคุมเวอร์ชันแบบกระจายความแตกต่างคือการคอมมิทจะยอมรับการเปลี่ยนแปลงที่เก็บโลคอลของคุณในขณะที่พุชจะพุชการเปลี่ยนแปลงไปยังรีโมตรีโมต
แหล่งที่มาของ Google
http://gitref.org/basic/ลิงค์นี้จะมีประโยชน์มากเช่นกัน
ในแง่คนธรรมดาgit commit
เป็นขั้นตอนก่อนที่git push
คุณจะเรียกใช้พวกเขาในการที่จะประสบความสำเร็จในการคอมไพล์ไฟล์ของคุณเพื่อ GitHub
git commit
คือการคอมมิทไฟล์ที่ staged ใน repo โลคอล git push
คือการกรอไปข้างหน้าอย่างรวดเร็วสาขาหลักของด้านท้องถิ่นด้วยสาขาต้นแบบระยะไกล แต่การผสานจะไม่ประสบความสำเร็จเสมอไป ถ้าปฏิเสธจะปรากฏขึ้นคุณจะต้องเพื่อให้คุณสามารถทำให้ประสบความสำเร็จpull
git push