Git 从新克隆的存储库签出到分支会导致该分支中的未暂存更改

2024-04-14

我有一个奇怪的 git 问题。 在检查了一个分支(远程跟踪的)后,我立即获得该分支中已修改和未暂存的更改。 我再次克隆了存储库以验证问题是否仍然存在。

我使用 Windows 和 gitblit 作为 Git 服务器。

您知道为什么会发生这种情况吗?

git status 的输出如下:

$ git status
# On branch RSD-5393
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   apis.releng/cquery/apis.RSD-4780.cquery
#       modified:   apis.releng/cquery/apis.RSD-4782.cquery
#       modified:   apis.releng/cquery/apis.RSD-4786.cquery
#       modified:   apis.releng/cquery/apis.RSD-4799.cquery
#       modified:   apis.releng/cquery/apis.RSD-4812.cquery
#       modified:   apis.releng/cquery/apis.RSD-4815.cquery
#       modified:   apis.releng/cquery/apis.RSD-4821.cquery
#       modified:   apis.releng/cquery/apis.RSD-4823.cquery
#       modified:   apis.releng/cquery/apis.RSD-4826.cquery
#       modified:   apis.releng/cquery/apis.RSD-4827.cquery
#       modified:   apis.releng/cquery/apis.RSD-4828.cquery
#       modified:   apis.releng/cquery/apis.RSD-4829.cquery
#       modified:   apis.releng/cquery/apis.RSD-4831.cquery
#       modified:   apis.releng/cquery/apis.RSD-4846.cquery
#       modified:   apis.releng/cquery/apis.RSD-4861.cquery
#       modified:   apis.releng/cquery/apis.RSD-4862.cquery
#       modified:   apis.releng/cquery/apis.RSD-4863.cquery
#       modified:   apis.releng/cquery/apis.RSD-4864.cquery
#       modified:   apis.releng/cquery/apis.RSD-4865.cquery
#       modified:   apis.releng/cquery/apis.RSD-4866.cquery
#       ....
no changes added to commit (use "git add" and/or "git commit -a")

.gitconfig:

[core]
autocrlf = true

存储库中的.gitattributes:

# Set the default behaviour, in case people don't have core.autocrlf set.
* text=auto

发生这种情况的原因有多种。

  1. 你有core.autocrlf设置已启用
  2. 你有一个.gitattributes文件有一个smudge or text filter

一些背景

autocrlf试图解决跨平台开发的线路结束困难,但往往会导致比它解决的问题更多的问题。
它转换 Windows 风格的行结束符 (\r\n) 到 Unix 风格的 (\n)将文件添加到存储库时。在 Windows 机器上工作时,它会在签出文件时将它们转换回 Windows 样式的行结尾。

虽然总体想法不错,但它可能会导致严重的问题,尤其是当它在二进制文件上疯狂运行时。所以大多数时候,自己处理行结尾是明智的选择。

你可以看一下这个问题 https://stackoverflow.com/questions/2825428/why-should-i-use-core-autocrlf-true-in-git欲了解更多信息autocrlf.

当使用.gitattributes文件可能是smudge过滤器将在结帐时修改您的文件。或者,text属性可用于启用autocrlf即使你的.gitconfig禁用它。


可能的解决方案

您的情况的一个可能的解决方案是禁用autocrlf全球(git config --global core.autocrlf false)并删除* text=auto线从你的.gitattributes file.
您应该继续提交.gitattributes文件并将其推送到远程。

与其他所有提交一样,您必须确保自己的更改在您希望的所有分支上可用。它们不会在整个存储库中神奇地可用。

之后,克隆应该会产生一个干净的工作目录。


最后说明

通常 git 应该忽略autocrlfed 文件以避免像您当前遇到的那样混乱的状态输出,但这似乎并不总是有效。避免的另一个原因autocrlf.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 从新克隆的存储库签出到分支会导致该分支中的未暂存更改 的相关文章

随机推荐

  • 使用意图从 Unity 应用程序向 Android 应用程序发送数据

    我有两个独立的应用程序 AppA 使用 Android Studio 开发 和 AppB 使用 Unity 开发 AppA 将启动 AppB 这是一个游戏应用程序 用户玩完游戏 AppB 并点击退出按钮后 会将游戏记录 字符串数组 发送回A
  • C/C++ 计算小数位数?

    假设用户输入的是十进制数 例如 5 2155 有 4 位小数 它可以自由存储 int double 等 有没有clever 或非常简单 找出数字有多少位小数的方法 有点像如何通过屏蔽最后一位来发现数字是偶数还是奇数的问题 我知道的两种方法
  • 从构造函数调用的shared_from_this

    我必须在创建对象时在容器中注册该对象 如果没有智能指针 我会使用这样的东西 a class a class register somewhere this 对于智能指针我应该使用shared from this但我不能在构造函数中使用它 有
  • 带可选参数的 TCL 过程调用

    存在一个 TCL 脚本 该脚本具有多个名称相似的过程定义func在不同的命名空间中 程序如下 proc func a puts a 所有这类程序都只有一个参数a 所有此类过程都是从整个脚本中的一行调用的 func a 我需要创建另一个具有相
  • 没有子导航属性的 EF 一对多外键

    使用代码优先的实体框架和 NET 4 我尝试在父母与孩子之间创建一对多关系 public class Parent Key public int ParentId get set Required public string ParentN
  • 使子视图与父滚动视图的宽度匹配

    我有一个带有许多 EditText 子项的水平滚动视图 我希望这些子级中的每一个都与父级滚动视图的可见区域具有相同的宽度 这在 XML 中可能吗 您可以编写一个小辅助类来做到这一点 我们正在创建一个非常小的类来扩展EditText call
  • Cypress 获取 href 属性

    我有一个测试用例 其中有一个在新选项卡中打开的链接 由于 Cypress 不支持多个选项卡 我想获得href该链接的属性 然后在同一选项卡中打开它 我正在尝试这样做 但由于某种原因它不起作用 it Advertise link should
  • ContextMenu 的 MenuItem DataContext 返回旧项目

    我在 LongListSelector 中使用 ContextMenu 以便可以删除绑定到 LLS 的列表中的一些项目 我正在遵循最近的指南here http www windowsphonegeek com articles the ne
  • 使用 Google 跟踪代码管理器等待 dataLayer.push()

    当用户按下网络中的按钮时 我必须发送谷歌标签管理器事件 事实上 这个按钮位于一个 iframe 内 单击后 该 iframe 被关闭 另一个 iframe 出现 我在 JavaScript 的点击事件上设置此事件数据 然后调用 dataLa
  • 在动画的 onFinished EventHandler 中使用 showAndWait 不起作用

    在JavaFx中 我想在动画结束后显示一个模式对话框 由于某种原因 在动画结束后执行的 EventHandler 中调用 showAndWait 不起作用 显示一个新窗口 但里面似乎没有绘制任何内容 这个例子说明了这个问题 public v
  • 如何使文本框适合表格单元格

    一直在尝试将文本框 自动调整文本框宽度 放入HTML表格的单元格中 但没有成功 任何人都可以帮忙吗 谢谢 我拥有的 td td
  • 创建所有节点具有相同入度和出度的矩阵

    我已经用图论术语阐述了这个问题 但概念化是不必要的 我想要做的是 使用 Python 生成一个由 0 和 1 组成的矩阵 其中每行都有相同数量的 1 每列都有相同数量的 1 当行数 发送节点 不等于列数 接收节点 时 行数将与列数不同 这是
  • FileProvider.getUriForFile 抛出 StringIndexOutOfBoundsException

    首先要提到的是 问题的答案here https stackoverflow com questions 47931146 fileprovider geturiforfile is causing stringindexoutofbound
  • 将 ZeroMQ 与 C# 和 inproc 传输一起使用

    我正在尝试 ZeroMQ 并试图得到某物在职的 我的第一个想法是使用 inproc 传输设置 REP REQ 看看是否可以在两个线程之间发送消息 下面的大部分代码取自 clzmq 示例 但它似乎不起作用 服务器和客户端都绑定到传输 但是当客
  • 将 SUMPRODUCT 与 TRANSPOSE 结合使用

    我正在尝试使用TRANSPOSE http www techonthenet com excel formulas transpose php inside SUMPRODUCT http www techonthenet com exce
  • iPad 上的 HTML5 视频元素不会触发 onclick 或 touchstart 事件?

    我正在尝试将一些事件附加到 iPad Web 应用程序内的 HTML5 视频元素 但它们似乎没有触发 我已经在设备和模拟器中对此进行了测试 并得到了相同的结果 然而 这些事件 至少对于 onclick 在桌面 Safari 中运行良好 我也
  • Powershell 等待 dotnet run 在某个端口上启动应用程序

    我正在编写一个脚本 该脚本应该依次运行两个 dotnet 应用程序 根据其 launchSettings json 第一个位于端口 5000 第二个位于端口 5001 到目前为止 这是运行应用程序的脚本 app1ProjectFolder
  • 将事实收集到事实缓存的最快方法

    我正在尝试让 Ansible 与 limit 一起工作 为此我需要有关其他主机的事实 我正在使用fact caching进行缓存 我应该运行什么命令 以便它只收集所有主机上的所有事实并缓存它们 而不运行任何任务 像这样的东西设置模块 htt
  • 如何使用 Visual Studio 2015 模拟 iOS 后台获取

    我搜索了一段时间 但找不到如何使用 Visual Studio 2015 模拟 iOS 后台获取 似乎有一种方法可以在 XCode 中执行此操作 但我找不到 Visual Studio 2015 的任何内容 有人可以帮忙吗 打开项目选项并转
  • Git 从新克隆的存储库签出到分支会导致该分支中的未暂存更改

    我有一个奇怪的 git 问题 在检查了一个分支 远程跟踪的 后 我立即获得该分支中已修改和未暂存的更改 我再次克隆了存储库以验证问题是否仍然存在 我使用 Windows 和 gitblit 作为 Git 服务器 您知道为什么会发生这种情况吗