git - checkout 后的意外变化

标签 git

我有一个远程 GIT 存储库,我在本地克隆了它。

之后我将分支更改为另一个分支,什么都不做,然后尝试更改为另一个分支,GIT 说有未提交的更改!?!

如果我什么都不做只是改变了分支,世界上怎么会有变化。

在控制台中查看此操作。

enter image description here

我确实设置了

git config --system core.autocrlf false

但是没有用。

这是怎么回事,从来没见过这样的行为。致力于 perftech 分支的人和我一样在 Windows 下工作。

谢谢

最佳答案

更新:
经过长时间的聊天 - 我们发现了问题: 这个项目有多个贡献者,其中一个与其他人设置了不同的 CRLF 值,这导致了问题。

解决方案:
确保所有团队都使用相同的 CRLf 配置以避免这些问题。


如何查看发生了什么变化?

首先查看发生了什么变化,然后尝试从中了解文件是如何被修改的。

git log HEAD^..HEAD

# to view the diff by words instead of lines:
git diff --color-words!

一旦您看到更改,请尝试找出它们从何而来。

同时确认您没有跟踪 filemode 以防 chmod 在这些文件上更新


Git 有一种叫做3 状态的东西

enter image description here

这3个状态是你的

  • 工作目录
  • 索引/舞台区
  • 存储库

此结构的重要部分(与您的问题相关)是:

工作目录和暂存区是共享的,一旦你 checkout 分支就不会修改

这意味着如果您切换分支,它们将保持之前的状态,并包含您对它们所做的所有更改。

唯一改变的是你的HEAD
要了解什么是 HEAD,请阅读此内容,它将详细解释 git 中的 HEAD 是什么:

How to move HEAD back to a previous location? (Detached head)

关于git - checkout 后的意外变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111248/

相关文章:

linux - 安装 Git 时出现 Debian Squeeze apt-get 错误?

即使在 'non-fast-forward updates' 之后,Git 也会给出 'git pull' 错误

git - 创建排除某些文件的补丁文件

git - 如何返回到特定的 GIT 提交而不会错过从该日期到现在的任何更改?

git subtree 简化如果从不贡献上游?

java - PullCommand 在 JGit 中抛出 'Nothing to fetch' 异常

git - 从git分支派生maven Artifact 版本

Git:接收电子邮件 Hook ,包括差异补丁?

git - Oracle SQL Developer 导出源以进行版本控制

git - 具有词法绑定(bind)的 Emacs lisp lambda?