我修改了分支A中的一些文件,然后使用git add
来添加这些修改过的文件。 但我忘了用git commit
提交修改到当前分支。然后我用git checkout B
切换到另一个分支。 当我再次切换到分支A时,我发现没有任何修改可以在这里找到。 有什么方法可以让我修改文件吗?如何在git add和git checkout没有git commit后重新获得diff?
回答
如果git允许您切换分支,即使未提交更改,这些更改也将传送到您切换到的分支。所以如果你检查这两个分支之间的差异,它不会显示任何改变。尝试使用任何其他基本分支的差异。希望
git add
通常会将对象写入对象数据库。如果它不再可以从索引或任何提交中访问,它将是一个悬浮的斑点。
$ 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
选项。)
我试过这个,但似乎只有通过git commit提交的更改可以被发现 –
@张张彪然后,无论您使用了什么'git add -N'都不会写任何东西到对象数据库,或者它是附加到索引或某处提交。它肯定会找到由'git add'编写的对象,然后在提交之前丢失。 – ephemient
我发现它们在藏匿处。在git添加大部分文件之后,我使用git存储,希望将剩余的文件存储起来。但似乎修改后的文件全部放到藏匿处,无论它们是否使用git add添加或不添加。
你在评论中声称你*没有使用'git stash'。 'git stash'的作用是编写至少两个*提交,一个用于当前索引内容,另一个用于当前工作树注释。有一个可选的第三个提交保存更多的文件:或者未被忽略的未被忽略的文件,或者未被追踪的文件,包括那些被忽略的文件。这两个或三个提交是作出的,但存储在* no *分支上,作为从当前提交悬浮的一类提交。 – torek
- 1. 并发git checkout/add/commit
- 2. 结合git add。和git commit
- 3. (git add -A后跟git commit)和git commit -a之间的区别?
- 4. git checkout commit-name和git checkout branchname有何区别
- 5. git新手 - git add/commit/push/pull
- 6. 什么做“git checkout \ *”和“git commit - ”完成?
- 7. git revert和git checkout
- 8. git add *和git add。有什么区别?
- 9. “git checkout”和“git checkout - ”有什么区别?
- 10. 如何通过`git diff`获取`git commit --verbose`输出?
- 11. “git commit”前的多个“git add”
- 12. git add→git commit。这是正确的吗?
- 13. 撤消git add和git commit以及一种git push原点
- 14. 如何在git推后执行git commit?
- 15. git-stash和git-checkout有什么区别?
- 16. 什么时候需要做“git pull”,在“git add,git commit”之前还是之后?
- 17. Git add,git commit,git push不发送文件到GitHub?
- 18. 如何在Git Tower中获得Git Commit消息?
- 19. git add -A vs git add file
- 20. 当用户在“git add”和“git commit”之前做“git push”会发生什么?
- 21. git commit -m vs git commit -am
- 22. 如何在`git push`后在本地和远程撤销`git commit`
- 23. git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>
- 24. 为什么Git提交-a(和git add,然后git commit)不会触发可执行文件pre-commit hook
- 25. 重新应用git commit
- 26. git add和git commit之间的区别-a
- 27. git add之间的区别。和git commit -am“message”
- 28. 是在Git 2.x`git add .`和`git add -A`是否一样?
- 29. 如何获得git子树diff?
- 30. `git diff`和`git difftool`有什么区别?
您在检出B之前是否使用过'git stash'? – 17slim
你确定没有任何修改?也许修改后的文件未分区? – destoryer
不,我在检出B之前没有使用git stash。当我在分支A时使用git status时,我看不到未修改的修改 –