มาถึงคำถามนี้ในตอนนี้และมีบางอย่างที่จะเพิ่ม
หากต้องการไปที่การคอมมิทล่าสุด:
git checkout $(git log --branches -1 --pretty=format:"%H")
คำอธิบาย:
git log --branchesแสดง log of commits จากทุกสาขาในท้องถิ่น
-1เพื่อ จำกัด หนึ่งกระทำ→
--pretty=format:"%H"รูปแบบการคอมมิชชันล่าสุดเพื่อแสดงเฉพาะการ
git checkout $(...)ใช้แฮชเอาท์พุทของ subshell เป็นอาร์กิวเมนต์สำหรับเช็คเอาท์
บันทึก:
ซึ่งจะส่งผลให้เกิดการแยกส่วนหัว (เนื่องจากเราชำระเงินโดยตรงกับการส่ง) สามารถหลีกเลี่ยงได้โดยการแยกชื่อสาขาโดยใช้คำsedอธิบายด้านล่าง
หากต้องการไปที่สาขาของการกระทำล่าสุด:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
คำอธิบาย:
git log --branchesแสดง log of commits จากทุกสาขาในท้องถิ่น
-1เพื่อ จำกัด หนึ่งกระทำ→
--pretty=format:"%D"รูปแบบการคอมมิชชันล่าสุดเพื่อแสดงเฉพาะชื่อ ref
| sed 's/.*, //g'ไม่สนใจทั้งหมด แต่สุดท้ายของ refs (*) หลายอัน
git checkout $(...)ใช้เอาต์พุตของ subshell เป็นอาร์กิวเมนต์สำหรับเช็คเอาท์
*) HEAD และ remote branch มีการระบุไว้เป็นอันดับแรกสาขาในพื้นที่จะแสดงรายการตามลำดับตัวอักษรจากมากไปน้อยดังนั้นส่วนที่เหลือจะเป็นชื่อสาขาตามลำดับตัวอักษร
บันทึก:
นี่จะใช้เฉพาะชื่อสาขา (ตัวอักษร) ก่อนหากมีหลายชื่อสำหรับการส่ง
อย่างไรก็ตามฉันคิดว่าทางออกที่ดีที่สุดคือการแสดงชื่อผู้อ้างอิงล่าสุดเพื่อทราบว่าจะต้องเช็คเอาต์ที่ใด:
git log --branches -1 --pretty=format:'%D'
เช่นสร้างนามแฝงgit topสำหรับคำสั่งนั้น
git logประโยคคำถามของคุณคุณสามารถเรียกใช้git log --all(หรือเป็นประโยชน์มากขึ้นgit log --oneline --graph --all)