มาถึงคำถามนี้ในตอนนี้และมีบางอย่างที่จะเพิ่ม
หากต้องการไปที่การคอมมิทล่าสุด:
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
)