以下是解释git问题的情况。
我正在使用'develop'分支并且已对本地文件进行了一些更改,例如.sql,.java,.js ......
我创建了一个名为'develop_some_future'的本地分支,因为我的老板想要在合并主'develop'存储库之前确认我的更改。
显然我的本地文件更改@'develop'分支已应用于'develop_some_future'分支,我又开始编辑本地文件。
出于某种原因,我试图拉取我的同事已经提交的文件,但它已经失败了(可能我不能很好地设置'develop_some_future'分支)。所以,我把当前的分支改为'develop'分支并试图拉它们。
幸运的是它有效,然后我试图回到'develop_some_future'分支。
更改分支时突然弹出一个对话框,并告诉我“你的本地更改”~~~ .sql“会被删除,因为它尚未提交。为避免这种情况,请提交该文件或选择重置。'
因为我认为只有'~~~ .sql'会被更改为最新的提交状态而且这不是问题,我选择了'重置'按钮,但遗憾的是所有本地更改都已消失。
任何人都知道如何在重置之前检索日期?
我发现'git reflog'和'git reset HEAD {}'命令都很有用。 但是,git reflog只显示提交,合并和结帐更改,因此我根本找不到重置状态。
答案 0 :(得分:1)
我担心您的文件已经消失了,除非您以前以某种方式暂存过该文件(add
或stash save
)。
如果它已经上演了,那么Git就会创建一个blob对象,它正在悬空(git fsck
会告诉你悬空物体)。然后,您可以通过将带有git cat-file
的blob内容写入新文件来恢复文件。
如果没有,你的搞砸了,你必须重新开始工作。
问题似乎首先出现,因为您认为未分级/未提交的更改属于当前分支。它们不,只存在于工作目录中。它们将在切换分支时被转移(当然,除非在分支中修改了相同的文件.Git将拒绝签出另一个分支。)