मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। एक ऑपरेशन के दौरान मेरा लैपटॉप बैटरी से बाहर चला गया। बू।
मेरे पास कोई बैकअप नहीं था। (एनबी उबंटू वन गिट के लिए एक बैकअप समाधान नहीं है; यह आपके भ्रष्ट प्रतिनिधि के साथ आपकी समझदारी रिपॉजिटरी को अधिलेखित करने में मदद करेगा।)
गिट जादूगरों के लिए, अगर यह इसे ठीक करने का एक बुरा तरीका था, तो कृपया एक टिप्पणी छोड़ दें। हालांकि, इसने मेरे लिए काम किया ... कम से कम अस्थायी रूप से।
चरण 1: .गित का एक बैकअप बनाएं (वास्तव में मैं हर कदम के बीच ऐसा करता हूं जो कुछ बदलता है, लेकिन एक नई कॉपी-टू नाम के साथ, उदाहरण के लिए ।गित-पुराना -1, .गित-पुराना -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 को 9f0abf890b113a287e10d56b66db6666cc1662d पर इंगित करना होगा।
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 पॉइंटर ऐसा लग रहा था कि यह एक (अब पुराना) इंडेक्स फ़ाइल ( स्रोत ) से था। इसलिए मैंने इसे मार दिया और रेपो को रीसेट कर दिया।
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
झूलते धब्बे त्रुटियां नहीं हैं । मैं 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
ऑपरेशन को अंजाम दिया? क्या आपकी हार्ड डिस्क भरी हुई है?