如果没有git commit,我如何在git add和git checkout之后恢复我的差异?

时间:2017-08-22 14:08:56

标签: git

我修改了分支A中的一些文件,然后使用git add添加这些修改过的文件。 但我忘了使用git commit提交对当前分支的修改。然后我使用git checkout B切换到另一个分支。 当我再次切换到分支A时,我发现在这里找不到任何修改过的东西。 有什么方法可以让修改过的文件回来吗?

3 个答案:

答案 0 :(得分:0)

如果git允许您切换分支,即使使用未提交的更改,这些更改也会传送到您切换到的分支。因此,如果您检查这两个分支之间的差异,它将不会显示任何变化。尝试将diff与任何其他基本分支一起使用。希望

答案 1 :(得分:0)

git add通常将对象写入对象数据库。如果它不再可以从索引或任何提交中访问,那么它将是一个悬空的blob。

$ git fsck --no-reflogs | grep 'dangling blob'
dangling blob 5cd8df407a53f3cf1a00d7df9b92973fc7124649
dangling blob a15ac56b6ac98b0b26c4d30bd299cf5cea817b83
dangling blob a052e2e82624bfa14d7004a30e971cfc543d3759
dangling blob b3cae5cf028ad4728b344193a7c6fe4e76e36af3
dangling blob bb428320e3f8496ee844dfe1826e5f705e47b0c8
dangling blob aa9bc6e7a3078a91a895f9ade9ecb0d3f46783a0
dangling blob 0094f013e9120ac2168248245ee492f1c551754d
dangling blob 896c4a4752fab07a7be22cc068c50d4b8021c8a9
dangling blob f6fc725dc3f01cedee7933651e202fa1e46101a4
$ git cat-file -p 5cd8df407a53f3cf1a00d7df9b92973fc7124649
...

您可以逐个打印出来,试图找到丢失的内容。 (另请参阅--lost-found选项。)

答案 2 :(得分:0)

我在藏匿处找到了它们。在git添加大部分文件之后,我使用git stash期望将剩余的文件存入存储。但似乎修改后的文件都被放到了藏匿处,无论它们是否已经使用git add添加。