fatal:git-write-tree:ツリー構築エラー


202

git pull共有gitリポジトリからを実行しましたが、を試した後、何かが本当にうまくいきませんでした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 2014年

1
@mmigdolええ- git reset(default)--mixedオプションを使用することがここでも適切で効果的である理由の説明が欲しいのですが。マージによると-Gitマージされていないパスの問題これはHEADに切り替わり、gitにマージの競合を忘れて作業ディレクトリをそのままにするように伝えます。 heracek、それは何が起こっているのですか?
nealmcb 2017

1
@writofmandamus数か月遅れますが、リセットとハイフンの間のスペースに注意してください。
Mike Ortiz

2
FWIW私がやっていたときにこの問題に遭遇しましたgit stash。それをgit reset --mixed解決しました。
Honey

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 addgit stash再試行してください。

git add app/assets/images/logo.png

6
これでうまくいきました。git reset --mixedは世界平和よりも良いかもしれませんが、それが何をするかについてのいくつかの説明がなければ、私はそれに触れません。私の場合、以前のプルで気づかなかった衝突がありました。未解決のプルのため、スタッシュは失敗しました。
Ian Ollmann、2016年

私はこの戦略をほどよく理解していませんgit reset --mixedが、うまくいったので、の場合git stashよりも後にエラーが発生したため、私の場合により適しているように思われましたgit revert
火星

マージされていないパス手段は、あなたが実行しているgit merge、またはgitのマージのと同等、それは、そのファイルへの変更の異なる2組をマージしようとしましたが、失敗しました。
siddhantsomani

11

malatの対応を追跡するために、パッチを作成して後で再適用することにより、変更が失われるのを回避できます。

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

安全のため、リポジトリフォルダーの外にパッチを保存してください。


これは私に与えました:SDGL132d9f4b4:glitch-common dstromberg $ patch -p0 </tmp/patch.txt patch:****パッチ入力でゴミのみが見つかりました。
dstromberg、2015

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
変更を失った場合、これは修正ではありません;)
PedroMagalhães18年

5

たぶん、gitリポジトリにマージされていないパスがあり、スタッシュする前に解決する必要があります。


1
これは私を助けたので、+ 1を与えます。しかし、私はもっと長い答えを出しました。
David Rz Ayala 14年

-1

これは私が変更を隠そうとしたときに起こりましたが、私の変更はブランチの現在の状態と競合していました。

そこで私はgit reset --mixedgitの競合を解決し、再び隠しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.