签出主分支后,对文件的未分级和未提交的更改

时间:2015-02-03 20:23:42

标签: git

我真的希望有人可以帮助我。我用谷歌搜索和搜索无休止地无济于事。

我有一个我正在研究的项目的git repo。我一直在研究许多不同的功能,每个功能都在不同的分支中。今天我想换到主分支并输入以下内容:

git checkout master

我收到一条警告说它无法更改为分支,因为我有未提交的文件(这些文件都没有我做过更改)所以作为一个完整的白痴我做了以下内容:

git checkout master -f

我很震惊地发现git status显示绝对没有更改过的文件。我所有的改变都消失了吗?当我切换到我创建的其中一个分支时,git status显示没有变化。我没有提交或暂存我更改的任何文件。

我真的希望有人可以帮助我,我正在进行多项工作。

1 个答案:

答案 0 :(得分:1)

git checkout <branch>所做的是它将当前分支(HEAD)与您要切换的分支之间的文件不同,它将版本替换为工作区版本(我认为暂存版本)来自<branch>。在HEAD和<branch>中相同的文件会保留其更改。

但是git checkout -f <branch><branch>中的版本替换了worktree和索引。您运气不好,除非您使用未保存的文件打开IDE(并且没有自动转换),或者从IDE备份文件或文件系统还原。

请注意,如果在某个时刻执行了 git add个文件,您将在存储库的对象数据库中获得所述文件的一些内容,并且您可以尝试使用git fsck --unreachable的帮助。

git-checkout(1) manpage说:

  

--force-f

     
      
  • 切换分支时,即使索引或工作树与HEAD不同,也要继续。这用于 丢弃本地更改
  •