ฉันมีปัญหาที่คล้ายกัน แล็ปท็อปของฉันแบตเตอรี่หมดในระหว่างการใช้งานคอมไพล์ หุยฮา
ฉันไม่มีข้อมูลสำรอง (NB Ubuntu One ไม่ใช่โซลูชันสำรองสำหรับ git มันจะช่วยเขียนทับพื้นที่เก็บข้อมูลที่มีสติกับของคุณที่เสียหาย)
สำหรับวิซาร์ดคอมไพล์ถ้านี่เป็นวิธีที่ไม่ดีในการแก้ไขโปรดแสดงความคิดเห็น อย่างไรก็ตามมันใช้ได้กับฉัน ... อย่างน้อยก็ชั่วคราว
ขั้นตอนที่ 1: ทำการสำรองข้อมูลของ. git (อันที่จริงฉันทำสิ่งนี้ในระหว่างทุกขั้นตอนที่เปลี่ยนแปลงบางอย่าง แต่ด้วยชื่อคัดลอกไปยังใหม่เช่น. git-old-1, .git-old-2 เป็นต้น) :
cp -a .git .git-old
ขั้นตอนที่ 2: เรียกใช้ git fsck --full
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
error: object file .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e is empty
fatal: loose object 8b61d0135d3195966b443f6c73fb68466264c68e (stored in .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e) is corrupt
ขั้นตอนที่ 3: ลบไฟล์เปล่า ฉันคิดว่าห่า; มันว่างเปล่าอยู่ดี
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e
rm: remove write-protected regular empty file `.git/objects/8b/61d0135d3195966b443f6c73fb68466264c68e'? y
ขั้นตอนที่ 3: เรียกใช้git fsckอีกครั้ง ทำการลบไฟล์เปล่าต่อไป คุณยังสามารถcdเข้าไปใน.gitไดเรกทอรีและเรียกใช้find . -type f -empty -delete -printเพื่อลบไฟล์เปล่าทั้งหมด ในที่สุดคอมไพล์ก็เริ่มบอกฉันว่าจริง ๆ แล้วมันกำลังทำอะไรบางอย่างกับไดเรกทอรีวัตถุ:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/e0/cbccee33aea970f4887194047141f79a363636 is empty
fatal: loose object e0cbccee33aea970f4887194047141f79a363636 (stored in .git/objects/e0/cbccee33aea970f4887194047141f79a363636) is corrupt
ขั้นตอนที่ 4: หลังจากลบไฟล์เปล่าทั้งหมดในที่สุดฉันก็มาถึงgit fsckทำงานจริง:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer af9fc0c5939eee40f6be2ed66381d74ec2be895f
error: refs/heads/master does not point to a valid object!
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
ขั้นตอนที่ 5: git reflogลอง ล้มเหลวเนื่องจากส่วนหัวของฉันเสีย
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reflog
fatal: bad object HEAD
ขั้นตอนที่ 6: Google ค้นหานี้ รับการอ้างอิงสองบรรทัดสุดท้ายด้วยตนเอง:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ tail -n 2 .git/logs/refs/heads/master
f2d4c4868ec7719317a8fce9dc18c4f2e00ede04 9f0abf890b113a287e10d56b66dbab66adc1662d Nathan VanHoudnos <nathanvan@gmail.com> 1347306977 -0400 commit: up to p. 24, including correcting spelling of my name
9f0abf890b113a287e10d56b66dbab66adc1662d af9fc0c5939eee40f6be2ed66381d74ec2be895f Nathan VanHoudnos <nathanvan@gmail.com> 1347358589 -0400 commit: fixed up to page 28
ขั้นตอนที่ 7: โปรดทราบว่าจากขั้นตอนที่ 6 เราได้เรียนรู้ว่า HEAD กำลังชี้ไปที่การกระทำสุดท้าย ดังนั้นให้ลองดูที่ผู้ปกครองกระทำ:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git show 9f0abf890b113a287e10d56b66dbab66adc1662d
commit 9f0abf890b113a287e10d56b66dbab66adc1662d
Author: Nathan VanHoudnos <nathanvan@XXXXXX>
Date: Mon Sep 10 15:56:17 2012 -0400
up to p. 24, including correcting spelling of my name
diff --git a/tex/MCMC-in-IRT.tex b/tex/MCMC-in-IRT.tex
index 86e67a1..b860686 100644
--- a/tex/MCMC-in-IRT.tex
+++ b/tex/MCMC-in-IRT.tex
มันได้ผล!
ขั้นตอนที่ 8: ตอนนี้เราต้องกำหนด HEAD ไปที่ 9f0abf890b113a287e10d56b66dbab66adc1662d
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git update-ref HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d
ซึ่งไม่ได้บ่น
ขั้นตอนที่ 9: ดูว่า fsck พูดว่าอะไร:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
error: 0e31469d372551bb2f51a186fa32795e39f94d5c: invalid sha1 pointer in cache-tree
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
missing blob 8b61d0135d3195966b443f6c73fb68466264c68e
missing blob e89896b1282fbae6cf046bf21b62dd275aaa32f4
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
missing blob caab8e3d18f2b8c8947f79af7885cdeeeae192fd
missing blob e4cf65ddf80338d50ecd4abcf1caf1de3127c229
ขั้นตอนที่ 10: ตัวชี้ sha1 ที่ไม่ถูกต้องในแคชทรีดูเหมือนว่ามาจากไฟล์ดัชนี (ที่ล้าสมัยแล้ว) ( แหล่งที่มา ) ดังนั้นฉันจึงฆ่ามันและรีเซ็ต repo
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ rm .git/index
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git reset
Unstaged changes after reset:
M tex/MCMC-in-IRT.tex
M tex/recipe-example/build-example-plots.R
M tex/recipe-example/build-failure-plots.R
ขั้นตอนที่ 11: ดู fsck อีกครั้ง ...
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git fsck --full
Checking object directories: 100% (256/256), done.
error: refs/heads/master.u1conflict does not point to a valid object!
dangling blob 03511c9868b5dbac4ef1343956776ac508c7c2a2
dangling blob dd09f7f1f033632b7ef90876d6802f5b5fede79a
blobs ห้อยไม่ได้ข้อผิดพลาด ฉันไม่ได้กังวลกับ master.u1conflict และตอนนี้มันใช้งานได้ฉันไม่ต้องการสัมผัสอีกต่อไป!
ขั้นตอนที่ 12: ติดตามการแก้ไขในท้องถิ่นของฉัน:
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: tex/MCMC-in-IRT.tex
# modified: tex/recipe-example/build-example-plots.R
# modified: tex/recipe-example/build-failure-plots.R
#
< ... snip ... >
no changes added to commit (use "git add" and/or "git commit -a")
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git commit -a -m "recovering from the git fiasco"
[master 7922876] recovering from the git fiasco
3 files changed, 12 insertions(+), 94 deletions(-)
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git add tex/sept2012_code/example-code-testing.R
nathanvan@nathanvan-N61Jq:~/workspace/mcmc-chapter$ git commit -a -m "adding in the example code"
[master 385c023] adding in the example code
1 file changed, 331 insertions(+)
create mode 100644 tex/sept2012_code/example-code-testing.R
หวังว่าจะเป็นประโยชน์กับผู้คนในอนาคต ฉันดีใจที่มันทำงาน
git addผ่าตัดหรือไม่? ฮาร์ดดิสก์ของคุณเต็มหรือไม่