签出 master 分支后未暂存和未提交的文件更改消失了
Unstaged and uncommitted changes to files gone after checking out master branch
我真的希望有人能在这里帮助我。我用谷歌搜索并无休止地搜索无济于事。
我有一个我正在处理的项目的 git 存储库。我一直在研究许多不同的功能,每个功能都在不同的分支中。今天想换到master分支,输入如下:
git checkout master
我收到一条警告,指出它无法更改到分支,因为我有未提交的文件(none 这些文件是我已更改的文件)所以 作为完全白痴我做了以下事情:
git checkout master -f
我震惊地发现 git status
显示完全没有更改的文件。我的所有更改都消失了吗?当我切换到我创建的分支之一时,git status
没有显示任何变化。我没有提交或暂存我更改过的任何文件。
我真的希望有人能帮助我,我花了好几天的时间来开发我正在开发的功能。
git checkout <branch>
的作用是获取当前分支 (HEAD) 和您要切换到的分支之间不同的文件,它用来自 <branch>
的版本。 HEAD 和 <branch>
中相同的文件保留其更改。
但是 git checkout -f <branch>
将工作树和索引都替换为 <branch>
中的版本。你运气不好,除非你 IDE 打开了未保存的文件(并且没有自动恢复),或者来自 IDE 的备份文件,或者文件系统恢复。
注意如果你做了 git add
文件,你会在版本库的对象数据库中有这些文件的一些内容,你可以试试在 git fsck --unreachable
.
的帮助下恢复它
--force
, -f
- When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.
我真的希望有人能在这里帮助我。我用谷歌搜索并无休止地搜索无济于事。
我有一个我正在处理的项目的 git 存储库。我一直在研究许多不同的功能,每个功能都在不同的分支中。今天想换到master分支,输入如下:
git checkout master
我收到一条警告,指出它无法更改到分支,因为我有未提交的文件(none 这些文件是我已更改的文件)所以 作为完全白痴我做了以下事情:
git checkout master -f
我震惊地发现 git status
显示完全没有更改的文件。我的所有更改都消失了吗?当我切换到我创建的分支之一时,git status
没有显示任何变化。我没有提交或暂存我更改过的任何文件。
我真的希望有人能帮助我,我花了好几天的时间来开发我正在开发的功能。
git checkout <branch>
的作用是获取当前分支 (HEAD) 和您要切换到的分支之间不同的文件,它用来自 <branch>
的版本。 HEAD 和 <branch>
中相同的文件保留其更改。
但是 git checkout -f <branch>
将工作树和索引都替换为 <branch>
中的版本。你运气不好,除非你 IDE 打开了未保存的文件(并且没有自动恢复),或者来自 IDE 的备份文件,或者文件系统恢复。
注意如果你做了 git add
文件,你会在版本库的对象数据库中有这些文件的一些内容,你可以试试在 git fsck --unreachable
.
--force
,-f
- When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.