ฉันอยู่ตรงกลางgit bisectเซสชัน
อะไรคือคำสั่งที่จะค้นหาว่าคอมมิชชันใด (แฮช SHA1) ที่ฉันกำลังใช้อยู่ git statusไม่ได้ให้สิ่งนี้
แก้ไข: ฉันเดาว่าการโทรgit logและการดูรายการแรกใช้ได้หรือไม่
ฉันอยู่ตรงกลางgit bisectเซสชัน
อะไรคือคำสั่งที่จะค้นหาว่าคอมมิชชันใด (แฮช SHA1) ที่ฉันกำลังใช้อยู่ git statusไม่ได้ให้สิ่งนี้
แก้ไข: ฉันเดาว่าการโทรgit logและการดูรายการแรกใช้ได้หรือไม่
คำตอบ:
คุณมีวิธีที่แตกต่างกันอย่างน้อย 5 วิธีในการดูการกระทำที่คุณได้ทำไว้ในสำเนาการทำงานของคุณในระหว่างgit bisectเซสชัน ( โปรดทราบว่าตัวเลือกที่ 1-4 จะใช้งานได้เมื่อคุณไม่ได้ทำการแบ่งส่วน ):
git show.git log -1.git status.git bisect visualize.ฉันจะอธิบายแต่ละตัวเลือกโดยละเอียดด้านล่าง
ตามที่อธิบายไว้ในคำตอบสำหรับคำถามทั่วไปเกี่ยวกับวิธีพิจารณาว่าคุณยอมรับการชำระเงินใด (ไม่ใช่เฉพาะในขณะนี้git bisect) คุณสามารถใช้git showกับ-sตัวเลือกในการระงับเอาต์พุตแพ็ตช์:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
นอกจากนี้คุณยังสามารถทำได้git log -1เพื่อค้นหาว่าคุณกำลังทำอะไรอยู่
$ git log -1 --oneline
c1abcde Add feature-003
ใน Git เวอร์ชั่น 1.8.3+ (หรือเป็นรุ่นก่อนหน้านี้หรือไม่) หากคุณมี Bash prompt ของคุณกำหนดค่าให้แสดงสาขาปัจจุบันที่คุณเช็คเอาท์ในสำเนาการทำงานของคุณแล้วมันจะแสดงการกระทำปัจจุบันที่คุณได้ตรวจสอบแล้ว ออกมาในช่วงเซสชั่น bisect หรือเมื่อคุณอยู่ในสถานะ "ถอดหัว" ในตัวอย่างด้านล่างขณะนี้ฉันได้c1abcdeเช็คเอาต์:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
เช่นเดียวกับ Git รุ่น 1.8.3+ (และอาจเป็นไปได้ก่อนหน้านี้ไม่แน่ใจอีกครั้ง) การเรียกใช้git statusจะแสดงให้คุณเห็นว่าคุณได้ทำอะไรในระหว่างการตัดและเมื่อคุณอยู่ในสถานะ HEAD ที่แยกออกมา:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
สุดท้ายในขณะที่คุณกำลังทำgit bisectคุณยังสามารถใช้git bisect visualizeหรือนามแฝงgit bisect viewในตัวเพื่อเปิดใช้gitkงานเพื่อให้คุณสามารถดูได้ว่าคุณกำลังทำอะไรอยู่ ฉันค่อนข้างแน่ใจว่าสิ่งนี้มีอยู่ก่อนรุ่น 1.8.3 ฉันไม่แน่ใจว่าจะเปิดตัวเวอร์ชันใด:
git bisect visualize
git bisect view # shorter, means same thing

git statusไม่แสดงรหัสกระทำการยกเว้นว่าคุณอยู่ในสถานะแยกออก ไม่อย่างนั้นจะพูดว่า "บนสาขาอะไรก็ตาม " git showทำงานได้แม้ว่า
คุณสามารถทำได้:
git rev-parse HEAD
เพื่ออธิบายเพิ่มเติมเล็กน้อย: git rev-parseเป็นคำสั่งพื้นฐานของ git สำหรับการตีความวิธีแปลกใหม่ใด ๆ ที่คุณสามารถระบุชื่อของการกระทำและHEADเป็นการอ้างอิงถึงการกระทำหรือสาขาปัจจุบันของคุณ (ในgit bisectเซสชั่นมันจะชี้ไปที่การคอมมิท ("HEAD เดี่ยว") แทนที่จะเป็นสาขา)
อีกวิธีหนึ่ง (และง่ายต่อการจดจำ) จะทำ:
git show
... ซึ่งจะแสดงค่าเริ่มต้นที่HEADชี้ไป สำหรับรุ่นที่กระชับยิ่งขึ้นคุณสามารถทำสิ่งต่อไปนี้
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
git rev-parse HEADไม่จำเป็นต้องทำการประมวลผลเทียบกับทางเลือกขยะทั้งหมด
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
ปรับปรุง:
อีกทางหนึ่ง (ถ้าคุณมีแท็ก):
(ดีสำหรับการตั้งชื่อรุ่นไม่ดีสำหรับการส่งกลับไปยังคอมไพล์)
$ git อธิบาย v0.1.49-localhost-AG-1-g273cf91
หรือ (ตามที่แนะนำให้ทำรายการที่นี่เพื่อความสมบูรณ์):
$ git show - ออนไลน์ -s c0235b7 Autorotate ภาพที่อัปโหลดตามการวางแนว EXIF
หากคุณต้องการแยกข้อมูลง่ายๆคุณสามารถใช้สิ่งนั้นgit showกับ--format=<string>ตัวเลือก ... และขอให้ไม่ให้ความแตกต่างกับ--no-patchคุณ ซึ่งหมายความว่าคุณสามารถรับเอาท์พุทสไตล์ printf ของสิ่งที่คุณต้องการซึ่งมักจะเป็นฟิลด์เดียว
ตัวอย่างเช่นในการรับแฮชที่สั้นลง%hคุณสามารถพูดว่า:
$ git show --format="%h" --no-patch
4b703eb
หากคุณต้องการบันทึกสิ่งนั้นลงในตัวแปรสภาพแวดล้อมใน bash (เป็นไปได้ที่คนต้องการทำ) คุณสามารถใช้$()ไวยากรณ์ :
$ GIT_COMMIT="$(git show --format="%h" --no-patch)"
$ echo $GIT_COMMIT
4b703eb
เต็มรูปแบบรายการของสิ่งที่คุณสามารถทำได้คือใน git show --helpแต่นี่คือรายการย่อของคุณสมบัติที่อาจมีประโยชน์:
%H กระทำการแฮช%h ตัวย่อกระทำการแฮช%T แฮชต้นไม้%t แฮชต้นไม้ย่อ%P ผู้ปกครองแฮช%p แฮชพาเรนย่อ%an ชื่อผู้แต่ง%ae อีเมลผู้แต่ง%at วันที่ผู้เขียน, การประทับเวลา UNIX%aI วันที่ผู้เขียนรูปแบบ ISO 8601 ที่เข้มงวด%cn ชื่อผู้เดินทาง%ce อีเมลผู้ส่ง%ct วันที่ส่งข้อมูล, เวลาประทับ UNIX%cI วันที่ส่งมอบรูปแบบ ISO 8601 ที่เข้มงวด%s เรื่อง%f หัวเรื่องที่ถูกสุขอนามัยเหมาะสำหรับชื่อไฟล์%gD ตัวเลือก reflog เช่น refs / stash @ {1}%gd ตัวเลือก reflog ที่สั้นลงเช่น stash @ {1}showมีอะไรสำหรับสาขา
ใช้git showซึ่งแสดงข้อความการส่งและการเริ่มต้นของการส่งข้อความเมื่อไม่มีการโต้แย้ง
git log -p -S <search>จะทำงาน