ฉันคิดถึงgit reset
และgit checkout
เหมือนเดิมเสมอในแง่ที่ว่าทั้งสองนำโครงการกลับสู่การกระทำที่เฉพาะเจาะจง อย่างไรก็ตามฉันรู้สึกว่าพวกเขาไม่สามารถเหมือนกันอย่างแน่นอนซึ่งจะซ้ำซ้อน ความแตกต่างที่แท้จริงระหว่างสองคืออะไร ฉันสับสนเล็กน้อยเนื่องจาก svn มีเพียงsvn co
การย้อนกลับการกระทำ
ADDED
VonC และ Charles อธิบายความแตกต่างระหว่างgit reset
และgit checkout
ดีจริง ๆ ความเข้าใจปัจจุบันของฉันคือการgit reset
ย้อนกลับการเปลี่ยนแปลงทั้งหมดกลับไปสู่การยอมรับที่เฉพาะเจาะจงในขณะที่git checkout
เตรียมมากขึ้นหรือน้อยลงสำหรับสาขา ฉันพบไดอะแกรมสองแผนภาพต่อไปนี้ค่อนข้างมีประโยชน์ในการทำความเข้าใจนี้:
เพิ่ม 3
จากhttp://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html การชำระเงินและการรีเซ็ตสามารถเลียนแบบได้ rebase
git checkout bar
git reset --hard newbar
git branch -d newbar
-- files
รูปแบบ: ฉันไม่แน่ใจ) แผนภาพนั้นทำให้ดูเหมือนความแตกต่างหลักคือว่าพวกเขาส่งผลกระทบต่อดัชนีหรือ WD ดูคำตอบของฉันเกี่ยวกับเรื่องนั้น ไดอะแกรมที่ 2 และ 3 มีประโยชน์มากสำหรับการเห็นความแตกต่างที่แท้จริง แผนภาพที่ 4 และ 5 มีประโยชน์ในการตรวจสอบว่าคุณเข้าใจสิ่งที่คำสั่งเหล่านี้ทำ แต่จะไม่ช่วยให้คุณไปถึงที่นั่นจริงๆ
think-like-a-git.net
จำเป็นต้องมีขั้นตอนเพิ่มเติม (ให้ไว้ในบทความที่เชื่อมโยง) เพื่อป้องกันการสูญหายของข้อมูล