เพื่อนร่วมงานของฉันเพิ่งมีสถานการณ์เช่นนี้ ในกรณีของเขามีการกระทำที่แยกออกจากกัน - พวกเขาทำงานใน R-Studio - และเครื่องมือได้เตือนพวกเขาว่าพวกเขาสามารถสร้างสาขาด้วยสิ่งนี้และการอ้างอิง SHA นั้น ... แต่เนื่องจากตัวเลือกเดียวคือ "ปิด" - ดุ !! มันเป็นกล่องข้อมูล - พวกเขาปิดบทสนทนาและสูญเสียข้อมูลไปตลอดกาล ...
ต้องขอบคุณreflogคำสั่งที่เราเห็นว่าการเปลี่ยนแปลงไม่สูญหายไป แต่ในกรณีของเราgit branchมันไม่ได้ผลตามที่คาดหวัง ... หรือขาเข้าgit pullทำให้มันยุ่ง เราต้องตกปลาการเปลี่ยนแปลงจาก reflog ไปยังสาขาที่สร้างขึ้นใหม่:
git cherry-pick 0b823d42..3cce27fc
ซึ่งวางคอมมิตทั้งหมดที่เราต้องการในสาขา จากนั้นเราสามารถรวมสาขาเข้าdevelopโดยไม่มีปัญหา
เพียง แต่ในกรณีนี้เป็นข้อมูลสำหรับทุกคนที่เราไม่แจ้งกระทำบนหัวเดี่ยวในreflogโดยดูที่ผู้ที่อยู่ในระหว่างที่มีเครื่องหมาย "เช็คเอาต์" (ซึ่งระบุสาขาขยับ):
e09f183b HEAD@{3}: pull: Fast-forward
b5bf3e1d HEAD@{4}: checkout: moving from lost_changes to develop
b5bf3e1d HEAD@{5}: checkout: moving from 3cce27fca50177a288df0252f02edd5da5ee64fd to lost_changes
3cce27fc HEAD@{6}: commit: add statistics
417a99a4 HEAD@{7}: commit: add test
0b823d42 HEAD@{8}: commit: new utility class
d9ea8a63 HEAD@{9}: checkout: moving from develop to d9ea8a635d4c2349fcb05b3339a6d7fad5ae2a09
b5bf3e1d HEAD@{10}: pull: Fast-forward
คนที่เราอยากได้HEAD@{8}ไปHEAD@{6}(ทั้งรวม) ดังนั้นเราจึงได้มาโดย:
git cherry-pick 0b823d42..3cce27fc
จากนั้นการแก้ปัญหาการผสานตามปกติและการคอมมิตขั้นสุดท้ายทำให้เรามี branch lost_changes ซึ่งโฮสต์งานแยกส่วนที่เราคิดว่าหายไป การรวมสิ่งนั้นเข้ากับการพัฒนาเป็นไปอย่างรวดเร็วในครั้งนี้