gpt4 book ai didi

java - 在我进入另一个分支并返回后,我看不到在 git 分支中所做的文件更改

转载 作者:行者123 更新时间:2023-12-02 01:12:35 25 4
gpt4 key购买 nike

我克隆了我的存储库。从我克隆到的文件夹中创建了一个项目。对 5 个文件进行了更改,并运行了测试。一切都好。然后我意识到我没有创建分支,所有更改都在“master”分支中。我“git add\path\to\file(s)”,但我没有提交它们。我 panic 了。我通过以下方式创建了一个新分支“X”git checkout -b 'X'。没有意识到,通过这样切换,所有内容已经从“master”变成了“X”,按照互联网上的提示,我做到了git checkout master 路径/到/在 master 中更改的文件,以便将这 5 个文件引入分支“X”。现在意识到我的错误,我进入“master”查看我的文件更改。它们不存在于“master”或“X”分支中!当我运行 'git status' 时,我看到以下内容。`在分支主控上您的分支比“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-files/

但是,即使只有 git,一切也还没有丢失。当您发出git add时命令您已经为这些文件创建了 git blob。当你这样做的时候git checkout master .它们不再位于 git 索引中,但在 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 file 我确实找到了更新的测试文件的内容。

您可以在 Git Internals - Plumbing and Porcelain 中找到有关 git 如何在内部存储内容的更多信息。免费 Pro Git 书籍的章节。它还提供了许多有用的低级命令,可以在遇到此类紧急情况时为您提供帮助。

为了确保这种情况不再发生,我建议 Git Tools - Reset Demystified章节。它解释了 git checkout 的确切行为和git reset使用不同的命令行选项,带/不带路径,带/不带分支。

关于java - 在我进入另一个分支并返回后,我看不到在 git 分支中所做的文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59149591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com