Git不会更改工作目录中的文件

时间:2016-05-17 19:45:40

标签: git

我分支一个新的分支......

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中的修改仍然存在。

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

4 个答案:

答案 0 :(得分:3)

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

 git reset --hard

请注意,这将删除任何未提交的更改。

答案 1 :(得分:2)

将新文件提交到新分支。然后结帐主人。

或者,git reset --hard

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

以下是您的简短摘要。

Git有一种称为 3-states 的东西。

enter image description here

以上描述了3种状态。

<强> The missing part

所有分支之间的工作目录和登台都是 SHARED (* - 有办法绕过它并且每个分支都有干净的3个状态)

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

如何放弃我的更改?

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