ฉันเพิ่งลบสาขาที่ไม่ถูกต้องพร้อมการเปลี่ยนแปลงทดสอบบางอย่างที่ฉันต้องการ git branch -D branchName
ฉันเพิ่งลบสาขาผิดปกติกับการเปลี่ยนแปลงการทดลองบางอย่างที่ฉันต้องการด้วย
ฉันจะกู้คืนสาขาได้อย่างไร
ฉันเพิ่งลบสาขาที่ไม่ถูกต้องพร้อมการเปลี่ยนแปลงทดสอบบางอย่างที่ฉันต้องการ git branch -D branchName
ฉันเพิ่งลบสาขาผิดปกติกับการเปลี่ยนแปลงการทดลองบางอย่างที่ฉันต้องการด้วย
ฉันจะกู้คืนสาขาได้อย่างไร
คำตอบ:
คุณสามารถใช้git reflogเพื่อค้นหา SHA1 ของการกระทำครั้งสุดท้ายของสาขา จากจุดนั้นคุณสามารถสร้างสาขาใหม่ได้โดยใช้
git branch branchName <sha1>
แก้ไข: ดังที่ @ seagullJS พูดว่าbranch -D
คำสั่งจะบอกคุณ sha1 ดังนั้นหากคุณไม่ได้ปิดเครื่อง แต่ก็กลายเป็นเรื่องง่าย ตัวอย่างเช่นการลบนี้แล้วเรียกคืนชื่อสาขาทันทีmaster2
:
user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
git branch branchName origin/branchName
หากคุณยังไม่ได้กดปุ่มลบคุณสามารถทำได้ดังนี้:
$ git checkout deletedBranchName
หากคุณเพิ่งลบสาขาคุณจะเห็นสิ่งนี้ในเทอร์มินัลของคุณ:
Deleted branch branch_name(was e562d13)
- โดยที่ e562d13 เป็นรหัสเฉพาะ (aka "SHA" หรือ "hash") ด้วยวิธีนี้คุณสามารถกู้คืนสาขาที่ถูกลบได้
ในการกู้คืนสาขาให้ใช้:
git checkout -b <branch_name> <sha>
ตัวอย่างเช่น :
git checkout -b branch_name e562d13
ขั้นแรก: สำรองข้อมูลไดเรกทอรีทั้งหมดของคุณรวมถึงไดเรกทอรี. git
ที่สอง: คุณสามารถใช้git fsck --lost-found
เพื่อรับ ID ของการกระทำที่หายไป
ที่สาม: ลดหรือรวมกับการกระทำที่สูญหาย
ที่สี่: คิดสองครั้งก่อนใช้ -D หรือ - บังคับกับ git :)
คุณสามารถอ่านการสนทนาที่ดีนี้กับวิธีการกู้คืนจากข้อผิดพลาดประเภทนี้
แก้ไข: โดยวิธีการที่ไม่ได้ทำงานgit gc
(หรืออนุญาตให้มันทำงานด้วยตัวเอง - เช่นไม่ได้ทำงานgit fetch
หรือสิ่งที่คล้ายกัน) หรือคุณอาจสูญเสียความมุ่งมั่นของคุณตลอดไป
ขอบคุณสิ่งนี้ใช้ได้
git branch new_branch_name
sha1
git checkout new_branch_name
// สามารถดูไฟล์เก่าของฉันที่เช็คอินในสาขาเก่าของฉัน
ทำตามขั้นตอนเหล่านี้:
1: เข้าสู่:
git reflog show
สิ่งนี้จะแสดงประวัติ Commit ทั้งหมดคุณต้องเลือก sha-1 ที่มีคอมมิทล่าสุดที่คุณต้องการรับกลับ
2: สร้างชื่อสาขาด้วยSha-1 ID ที่คุณเลือกเช่น: 8c87714
git branch your-branch-name 8c87714
สิ่งนี้ใช้ได้กับฉัน:
git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139