致命的:git-write-tree:错误构build树

我从一个共享的git仓库做了一个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 

有没有办法重置所有这一切?

谢谢

使用:

git reset --mixed

而不是git reset --hard 。 你不会失去任何改变。

这对我工作:

 $ git status 

并检查你是否有未Unmerged paths

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

修正他们与git add到他们每个人,并再次尝试git stash

 git add app/assetshttp://img.dovov.comlogo.png 

我用了:

  git reset --hard 

我失去了一些改变,但是这没关系。

要跟踪malat的反应,您可以通过创build补丁程序避免丢失更改并在稍后重新应用。

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

将您的修补程序存储在存储库文件夹之外以确保安

也许在你的git仓库中有一些没有合并的path,你必须在存储之前解决。