घातक: गिट-राइट-ट्री: त्रुटि निर्माण पेड़


202

मैंने git pullएक साझा गिट रिपॉजिटरी से किया था , लेकिन कुछ गलत होने के बाद, मैंने एक कोशिश की git revert। यहाँ अब स्थिति है:

$ git stash
Source/MediaStorageAndFileFormat/gdcmImageCodec.cxx: needs merge
Source/MediaStorageAndFileFormat/gdcmJPEGLSCodec.cxx: needs merge
Source/MediaStorageAndFileFormat/gdcmPNMCodec.cxx: needs merge
Testing/Source/DataStructureAndEncodingDefinition/Cxx/TestDS.cxx: needs merge
Utilities/socketxx/socket++/sockstream.cpp: needs merge
Source/MediaStorageAndFileFormat/gdcmImageCodec.cxx: needs merge
Source/MediaStorageAndFileFormat/gdcmJPEGLSCodec.cxx: needs merge
Source/MediaStorageAndFileFormat/gdcmPNMCodec.cxx: needs merge
Testing/Source/DataStructureAndEncodingDefinition/Cxx/TestDS.cxx: needs merge
Utilities/socketxx/socket++/sockstream.cpp: needs merge
Source/MediaStorageAndFileFormat/gdcmImageCodec.cxx: unmerged (2aafac967c35fa4e77c3086b83a3c102939ad168)
Source/MediaStorageAndFileFormat/gdcmImageCodec.cxx: unmerged (78cc95e8bae85bf8345a7793676e878e83df167b)
Source/MediaStorageAndFileFormat/gdcmImageCodec.cxx: unmerged (2524db713fbde0d7ebd86bfe2afc4b4d7d48db33)
Source/MediaStorageAndFileFormat/gdcmJPEGLSCodec.cxx: unmerged (4bb4ba78973091eaa854b03c6ce24e8f4af9e7cc)
Source/MediaStorageAndFileFormat/gdcmJPEGLSCodec.cxx: unmerged (ad0982b8b8b4c4fef23e69bbb639ca6d0cd98dd8)
Source/MediaStorageAndFileFormat/gdcmJPEGLSCodec.cxx: unmerged (4868371b7218c6e007fb6c582ad4ab226167a80a)
Source/MediaStorageAndFileFormat/gdcmPNMCodec.cxx: unmerged (f7a1b386b5b13b8fa8b6a31ce1258d2d5e5b13c5)
Source/MediaStorageAndFileFormat/gdcmPNMCodec.cxx: unmerged (6ce299c416fbb3bb60e11ef1e54962ffd3449a4c)
Source/MediaStorageAndFileFormat/gdcmPNMCodec.cxx: unmerged (75c8043a60a56a1130a34cdbd91d130bc9343c1c)
Testing/Source/DataStructureAndEncodingDefinition/Cxx/TestDS.cxx: unmerged (79c2843f2649ea9c87fa57662dafd899a5fa39ee)
...
fatal: git-write-tree: error building trees
Cannot save the current index state

वहाँ सब रीसेट करने के लिए एक तरीका है?

धन्यवाद

जवाबों:


566

उपयोग:

git reset --mixed

के बजाय git reset --hard। आप कोई भी परिवर्तन नहीं करेंगे।


29
ध्यान दें कि --mixedतर्क भी git resetडिफ़ॉल्ट व्यवहार है, जब एक तर्क नहीं दिया जाता है। संदर्भ के लिए पेज।
क्रिस्टोफर

62
मान्य उत्तर, लेकिन क्या हुआ और क्यों यह आवश्यक था, इसके लिए स्पष्टीकरण देना अच्छा होगा।
mmigdol

1
@mmigdol Yes - मैं इस बात का स्पष्टीकरण देखना चाहता हूं कि क्यों git reset(डिफ़ॉल्ट) --mixedविकल्प यहां भी उपयुक्त और प्रभावी है। मर्ज के अनुसार - गिट अनमरजेड पाथ इशू : यह HEAD में बदल जाएगा, और किसी भी मर्ज के टकराव को भूलने के लिए गिट को बताएगा, और वर्किंग डायरेक्टरी को छोड़ दें। heracek, कि क्या चल रहा है?
nealmcb

1
@writofmandamus महीने देर से, लेकिन रीसेट और हाइफ़न के बीच की जगह पर ध्यान दें।
ओर्टिज़

2
FWIW मैं इस मुद्दे में भाग गया जब मैं कर रहा था git stash। करते-करते git reset --mixedहल हो गया।
हनी

45

यह मेरे लिए काम किया:

करना

$ git status

और अगर आपके पास है तो जांच करें Unmerged paths

# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add <file>..." to mark resolution)
#
#   both modified:      app/assets/images/logo.png
#   both modified:      app/models/laundry.rb

उनमें git addसे प्रत्येक के साथ उन्हें ठीक करें और git stashफिर से प्रयास करें।

git add app/assets/images/logo.png

6
इसने मेरे लिए काम किया। git reset --mixed विश्व शांति से बेहतर हो सकता है, लेकिन यह क्या करता है, इसके कुछ स्पष्टीकरण के बिना, मैं इसे नहीं छू रहा हूं। मेरे मामले में, पहले की खींचतान में एक टकराव हुआ था जिसे मैंने नोटिस नहीं किया था। अनसुलझी खींचतान के कारण यह टकराव विफल हो गया।
इयान ओलमैन

मैं इस रणनीति को किसी भी तरह से बेहतर नहीं समझता git reset --mixed, लेकिन यह काम किया, और मेरे मामले के लिए एक बेहतर फिट की तरह लग रहा था क्योंकि मुझे इसके git stashबजाय त्रुटि मिली git revert
मंगल

एक अनमैरिड पथ का मतलब है कि आपने चलाया है git merge, या गिट मर्ज के बराबर है, और इसने उस फ़ाइल में दो अलग-अलग बदलावों को मर्ज करने की कोशिश की, लेकिन असफल रहा।
सिद्धान्तोमनी

11

मालट की प्रतिक्रिया पर अनुवर्ती करने के लिए, आप एक पैच बनाकर परिवर्तन को खोने से बचा सकते हैं और बाद में इसे फिर से लागू कर सकते हैं।

git diff --no-prefix > patch.txt
patch -p0 < patch.txt

सुरक्षा के लिए रिपॉजिटरी फ़ोल्डर के बाहर अपने पैच को स्टोर करें।


इसने मुझे दिया: SDGL132d9f4b4: glitch-common dstromberg $ पैच -p0 </tmp/patch.txt पैच: **** पैच इनपुट में केवल कचरा मिला।
dstromberg

मुझे लगता है कि आपको mvउस निर्देशिका में फिर से पैच करना चाहिए जहां आपने इसे बनाया था। 1. git diff2. mv patch.txt /tmp3. git stash4. mv /tmp/patch.txt .5.patch -p0
yunzen

9

मैंनें इस्तेमाल किया:

 git reset --hard

मैंने कुछ बदलाव खो दिए हैं, लेकिन यह ठीक है।


6
बस एक नोट: git revertअतीत से परिवर्तनों को मर्ज करने का प्रयास; आपने सही ढंग git resetसे घड़ी को रिवाइंड करने के लिए उपयोग किया है। यह दुर्भाग्यपूर्ण है कि git stashमर्ज संघर्ष के साथ काम नहीं करता है।
जोश ली

2
यदि आप परिवर्तन खो देते हैं, तो यह ठीक नहीं है;)
पेड्रो मैगलैस

5

हो सकता है कि आपके गिट रिपॉजिटरी में कुछ अनमैरिड रास्ते हों जिन्हें आपको स्टैशिंग करने से पहले हल करना होगा।


1
इससे मुझे मदद मिली तो मैं इसे +1 कर दूंगा। लेकिन मैंने अधिक विस्तारित उत्तर दिया।
डेविड आरज़ अयाला

-1

यह मेरे लिए तब हुआ जब मैं अपने परिवर्तनों को छिपाने की कोशिश कर रहा था, लेकिन तब मेरे बदलावों का मेरी शाखा की वर्तमान स्थिति के साथ टकराव हो गया था ।

तो मैंने किया git reset --mixedऔर फिर गिट संघर्ष को हल किया और फिर से टकरा गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.