【问题标题】:Git doesn't change files in working directoryGit不会更改工作目录中的文件
【发布时间】:2016-09-14 01:52:24
【问题描述】:

我分支了一个新分支...

git checkout -b loginComponent

我创建了一个新文件并对现有文件进行了一些更改。然后我决定......嗯,我不喜欢我所做的......所以我的目标是回到我分支任何东西之前。所以我输入...

git checkout master

希望文件恢复到我分支之前的状态。

我收到以下消息:

A       app/login.component.html
A       app/login.component.ts
M       app/webff.component.ts
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

但是,这不会发生。文件(login.component.html、login.component.ts)仍然存在,webff.component.ts 中的修改也仍然存在。

我错过了什么吗?我似乎记得这在过去有效......

【问题讨论】:

    标签: git


    【解决方案1】:

    您在这里缺少一些基本的 git 知识。

    完整的答案在这里:git checkout carries unstaged files to the new branch

    这是给你的简短摘要。

    Git 有一种叫做 3-states 的东西。

    上面描述了这 3 个状态。

    The missing part

    所有分支之间的工作目录和暂存是共享(* - 有一种方法可以绕过它,并且每个分支都有干净的 3 个状态)

    但在您的情况下,工作目录和暂存是共享的,因此当您在分支之间“移动”时,所有未提交的内容都将保留在那里,除非您处理它。


    如何放弃我的更改?

    阅读此内容以了解什么是 HEAD,然后按照答案中的说明使用重置。
    How to move HEAD back to a previous location? (Detached head)

    【讨论】:

      【解决方案2】:

      将新文件提交到新分支。然后结帐大师。

      或者,git reset --hard

      【讨论】:

      • 因此,如果我在切换之前提交,那么文件将在“git checkout master”时恢复(删除)
      • 是的,如果你在切换之前提交,更改将进入 loginComponent 分支,因此不会有未提交的更改持久返回。
      【解决方案3】:

      'git checkout -f' 还将工作目录中的文件恢复到存储库版本。

      【讨论】:

        【解决方案4】:

        更改分支时更改仍然存在。要重置对 HEAD 的更改,请使用以下命令:

         git reset --hard
        

        请注意,这将删除所有未提交的更改。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-11
          • 2010-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-05
          • 2011-04-22
          • 2012-07-13
          相关资源
          最近更新 更多