ฉันโคลนที่เก็บคอมไพล์ของโปรเจ็กต์หนึ่ง ฉันสามารถเปลี่ยนไฟล์ให้อยู่ในสถานะเริ่มต้นและเมื่อฉันตรวจสอบไฟล์ไปที่การแก้ไข 2, 3, 4 ... ล่าสุดได้หรือไม่ ฉันต้องการที่จะเห็นภาพรวมของการพัฒนาโครงการ
ฉันโคลนที่เก็บคอมไพล์ของโปรเจ็กต์หนึ่ง ฉันสามารถเปลี่ยนไฟล์ให้อยู่ในสถานะเริ่มต้นและเมื่อฉันตรวจสอบไฟล์ไปที่การแก้ไข 2, 3, 4 ... ล่าสุดได้หรือไม่ ฉันต้องการที่จะเห็นภาพรวมของการพัฒนาโครงการ
คำตอบ:
ใช้git checkout <sha1>
เพื่อตรวจสอบการกระทำที่เฉพาะเจาะจง
git log
แสดงเฉพาะการคอมมิทครั้งแรกตอนนี้ฉันสามารถค้นหา sha1 ของการคอมมิทครั้งต่อไปได้หรือไม่?
git log --oneline
และเอาท์พุทติดเข้าไปในไฟล์ข้อความเพื่ออ้างอิง (ผลรวม sha1 ที่ย่อนั้นจะมีการรับประกันว่าจะไม่ซ้ำกัน) อีกตัวเลือกหนึ่งถ้าประวัติของคุณเป็นแบบเชิงเส้นคือการหาจำนวนการคอมมิชชันที่มีตั้งแต่การคอมมิทจนกระทั่งถึงmaster
และใช้git checkout master~543
(ถ้ามี 543 คอมมิชชัน) ดังนั้นgit checkout master~542
เป็นต้น
หากต้องการไปที่เวอร์ชันเฉพาะ / ส่งคำสั่งรันคำสั่ง รหัสแฮชที่คุณจะได้รับจากgit log --oneline -n 10
git reset --hard HASH-CODE
หมายเหตุ - หลังจากรีเซ็ตเป็นเวอร์ชั่น / การส่งมอบโดยเฉพาะคุณสามารถเรียกใช้git pull --rebase
งานได้หากคุณต้องการดึงการคอมมิททั้งหมดที่ถูกทิ้งไป
reset
ไม่เพียงแค่ชำระเงินเฉพาะจุดในกราฟมันจะย้ายสาขาที่คุณได้ชำระเงินในปัจจุบัน
reset
การเปลี่ยนแปลงที่รอดำเนินการทั้งหมดของคุณจะถูกยกเลิก
git pull --rebase
ใช้งานได้เฉพาะในกรณีที่คุณมีรีโมทสำหรับ repo ของคุณและเป็นข้อมูลล่าสุด
gitk
คุณจะได้รับมุมมองแบบกราฟิกของประวัติศาสตร์โครงการที่มีเครื่องมือเช่น เพิ่งรัน:
gitk --all
หากคุณต้องการชำระเงินสาขาที่เฉพาะเจาะจง:
git checkout <branch name>
สำหรับการคอมมิทเฉพาะใช้แฮช SHA1 แทนชื่อสาขา (ดูTreeishในGit Community Bookซึ่งเป็นการอ่านที่ดีเพื่อดูตัวเลือกอื่น ๆ สำหรับการนำทางต้นไม้ของคุณ)
git log
มีทั้งชุดของตัวเลือกเพื่อแสดงรายละเอียดหรือประวัติสรุปด้วย
ฉันไม่รู้วิธีง่ายๆในการก้าวไปข้างหน้าในประวัติการกระทำ โครงการที่มีประวัติเชิงเส้นอาจไม่ใช่สิ่งที่พบได้ทั่วไป แนวคิดของ "การแก้ไข" อย่างที่คุณมีกับ SVN หรือ CVS นั้นไม่ได้ทำแผนที่ทั้งหมดใน Git
ด้วยการใช้คีย์ SHA1 ของคอมมิชชันคุณสามารถทำสิ่งต่อไปนี้:
ขั้นแรกค้นหาการคอมมิตที่คุณต้องการสำหรับไฟล์เฉพาะ:
git log -n <# commits> <file-name>
สิ่งนี้อิงจากคุณ<# commits>
จะสร้างรายการข้อผูกพันสำหรับไฟล์เฉพาะ
เคล็ดลับ: หากคุณไม่แน่ใจว่าคุณกำลังค้นหาสิ่งใดวิธีที่ดีในการค้นหาคือการใช้คำสั่งต่อไปนี้: git diff <commit-SHA1>..HEAD <file-name>
ถ้าคุณไม่แน่ใจว่าสิ่งที่กระทำที่คุณกำลังมองหาวิธีที่ดีที่จะพบคือใช้คำสั่งต่อไปนี้: คำสั่งนี้จะแสดงความแตกต่างระหว่างเวอร์ชั่นปัจจุบันของการคอมมิทและเวอร์ชั่นก่อนหน้าของการคอมมิทสำหรับไฟล์ที่ระบุ
หมายเหตุ: รหัส SHA1 ของคีย์ได้รับการจัดรูปแบบในgit log -n
รายการของ:
ผูกมัด
<SHA1 id>
ประการที่สองชำระเงินรุ่นที่ต้องการ:
หากคุณพบกระทำ / รุ่นที่คุณต้องการเพียงแค่ใช้คำสั่ง: git checkout <desired-SHA1> <file-name>
สิ่งนี้จะวางเวอร์ชันของไฟล์ที่คุณระบุในพื้นที่จัดเตรียม หากต้องการนำออกจากพื้นที่การแสดงชั่วคราวเพียงใช้คำสั่ง:reset HEAD <file-name>
หากต้องการย้อนกลับไปที่ที่เก็บรีโมตชี้ไปที่ให้ใช้คำสั่ง: git checkout HEAD <file-name>
ฉันอยู่ในสถานการณ์ที่เรามีสาขาหลักแล้วสาขาอื่นที่เรียกว่า 17.0 และภายใน 17.0 นี้มีแฮชคอมมิชชันที่ไม่พูดว่า"XYZ" "XYZ"และลูกค้าจะได้รับบิลด์จนกว่าจะมีการแก้ไข XYZ ตอนนี้เราเจอข้อผิดพลาดและต้องแก้ไขสำหรับลูกค้ารายนั้น ดังนั้นเราต้องสร้างสาขาแยกสำหรับลูกค้ารายนั้นจนกระทั่งแฮช "xyz" ดังนั้นนี่คือวิธีที่ฉันทำ
ก่อนอื่นฉันสร้างโฟลเดอร์โดยใช้ชื่อลูกค้าในเครื่องของฉัน สมมติว่าชื่อลูกค้าคือ "AAA" เมื่อโฟลเดอร์นั้นถูกสร้างขึ้นโดยใช้คำสั่งในโฟลเดอร์นี้:
วิธีหนึ่งคือการสร้างความมุ่งมั่นทั้งหมดที่เคยทำกับแพทช์ ชำระเงินการกระทำเริ่มต้นจากนั้นจึงใช้โปรแกรมแก้ไขตามลำดับหลังจากอ่าน
ใช้git format-patch <initial revision>
แล้วgit checkout <initial revision>
แล้วคุณควรได้รับกองไฟล์ในผู้อำนวยการของคุณเริ่มต้นด้วยตัวเลขสี่หลักซึ่งเป็นแพทช์
เมื่อคุณอ่านการแก้ไขเสร็จแล้วคุณgit apply <filename>
ควรทำเช่นนั้น
git apply 0001-*
และนับ
แต่ฉันสงสัยจริงๆว่าทำไมคุณไม่อยากอ่านแผ่นแปะแทน กรุณาโพสต์สิ่งนี้ในความคิดเห็นของคุณเพราะฉันอยากรู้
คู่มือ git ทำให้ฉันด้วย:
git show next~10:Documentation/README
แสดงเนื้อหาของไฟล์เอกสาร / README ตามที่เป็นปัจจุบันในการกระทำครั้งที่ 10 ครั้งสุดท้ายของสาขาต่อไป
คุณสามารถดูที่git blame filename
ให้รายชื่อที่แต่ละบรรทัดเชื่อมโยงกับคอมมิชชันแฮช + ผู้เขียน
ในการรับรหัสที่ได้รับมอบหมายคุณต้องใช้รหัสแฮชของการส่งนั้น คุณสามารถรับรหัสแฮชได้สองวิธี:
git log
และตรวจสอบการกระทำล่าสุดของคุณในสาขานั้น มันจะแสดงรหัสแฮชของการกระทำของคุณและข้อความที่คุณปล่อยไว้ในขณะที่คุณกำลังยืนยันรหัสของคุณ เพียงคัดลอกแล้วทำgit checkout commit_hash_code
หลังจากย้ายไปยังรหัสนั้นแล้วหากคุณต้องการทำงานกับมันและทำการเปลี่ยนแปลงคุณควรสร้างสาขาอื่นด้วยgit checkout -b <new-branch-name>
มิฉะนั้นการเปลี่ยนแปลงจะไม่ถูกเก็บไว้
เพื่อตรวจสอบความมุ่งมั่น (คุณกำลังมองอดีต!
ในการรีสตาร์ทอย่างไร้ความปราณีจากการคอมมิชชันและลบสาขาในภายหลังที่คุณอาจทำผิดพลาด
git log -n1
คุณสามารถทำเช่นนี้ แต่ถ้าgit checkout
ล้มเหลวมันเสียความพยายาม