[英]Will rebase main remove the current changes I made in my branch in git?
[英]I can't see file changes I made in my git branch, after I went in to a different branch and came back
我克隆了我的存储库。 从我克隆到的文件夹中创建了一个项目。 对 5 个文件进行了更改,运行了测试。 一切都好。 然后我意识到我没有创建一个分支,我所有的更改都在“master”分支中。 我'git add \\path\\to\\file(s)',但我没有提交它们。 我惊慌失措。 我通过执行git checkout -b 'X'
创建了一个新分支git checkout -b 'X'
。 没有意识到,通过这样切换,所有内容都已经从“master”进入到“X”,按照互联网的提示,我做了git checkout master path/to/file(s) which were changed in master
中git checkout master path/to/file(s) which were changed in master
了将这 5 个文件带入分支“X”。 现在意识到我的错误,我进入“master”查看我的文件更改。 它们不在“master”或“X”分支中!! 当我运行'git status'
我看到以下内容。`在 master 分支上,您的分支领先于 'origin/master' 3065 次提交。 (使用“git push”来发布你的本地提交)
` 更改到哪里去了? 如何恢复它们? 这是 4 天的工作,牺牲了我的感恩节假期。 有人会在这里帮助我吗? 我在 IntelliJ 工作。 生无可恋。 非常感谢提前。
首先,在运行任何进一步的 git 命令或尝试其他任何操作之前,使用 .git 文件夹压缩整个项目。
您最简单的选择可能是使用 intelliJ 本地历史记录: https ://www.jetbrains.com/help/idea/local-history.html
据我所知,它默认启用,你应该很容易找回你删除的文件: https : //blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-文件/
然而,即使使用 git only,一切都还没有丢失。 当您发出git add
命令时,您已经为这些文件创建了 git blob。 当您执行git checkout master .
它们不再在 git index 中,但在 git 进行垃圾收集之前,它们仍然物理上位于 .git 中。
我尝试在本地对您的情况进行建模,在使用另一个分支的更改更新我的本地索引后,我看到以下表示先前添加的文件的悬空 blob:
$ git fsck
Checking object directories: 100% (256/256), done.
dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
dangling blob f2734a2fe05bfe4293d5a408c7e2ce849cbc62b2
我做了git fsck --lost-found
,在.git\\lost-found\\other\\f2734a2fe05bfe4293d5a408c7e2ce849cbc62b2
文件中,我确实找到了更新测试文件的内容。
您可以在免费的 Pro Git 书籍的Git Internals - Plumbing and Porcelain章节中找到有关 git 如何在内部存储内容的更多信息。 它还提供了许多有用的低级命令,可以在此类紧急情况下为您提供帮助。
为了确保这种情况不再发生,我建议使用Git 工具 - 重置解密章节。 它用不同的命令行选项解释了git checkout
和git reset
的确切行为,带/不带路径,带/不带分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.