我做了一个git拉从一个共享的git存储库,但一些事情真的出错了,在我尝试了一个git恢复。现在的情况是:

$ 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

有办法重置这一切吗?

谢谢


当前回答

我在尝试合并另一个分支时遇到了这种情况。合并失败的fatal: git-write-tree:错误构建树,并抱怨一个与合并无关的不同文件。然后我的分支包含了它试图合并的文件,作为未提交的更改。

我清除了它试图合并的更改,然后删除了问题文件并重新构建散列:

git reset --hard;

git rm --cache problem_file.txt;

git hash-object -w problem_file.txt;

合并成功了。

其他回答

我使用:

 git reset --hard

我丢了一些零钱,不过没关系。

我在尝试合并另一个分支时遇到了这种情况。合并失败的fatal: git-write-tree:错误构建树,并抱怨一个与合并无关的不同文件。然后我的分支包含了它试图合并的文件,作为未提交的更改。

我清除了它试图合并的更改,然后删除了问题文件并重新构建散列:

git reset --hard;

git rm --cache problem_file.txt;

git hash-object -w problem_file.txt;

合并成功了。

这招对我很管用:

Do

$ git status

检查是否有未合并路径

# 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添加到他们每个人,并尝试git stash再次。

git add app/assets/images/logo.png

当我试图隐藏我的更改时,就发生了这种情况,但后来我的更改与分支的当前状态发生冲突。

所以我做了git重置-混合,然后解决了git冲突,并再次存储。

为了跟踪malat的响应,您可以通过创建一个补丁并在以后重新应用它来避免丢失更改。

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

为了安全起见,将补丁存储在存储库文件夹之外。