我的git repo中的linebreak一塌糊涂

时间:2014-01-24 20:01:54

标签: git line-breaks

我们最近接管了第三方软件的管理,而我现在被分配到该项目的第一步是将软件直接从实时服务器推送到git仓库。

现在我从一位同事那里得到了一个项目版本:“这里你有项目目录,我不确切知道我改变了哪些文件。我实现了功能XY。请将它合并到回购中,以便我们可以将它部署到登台服务器......“。

所以现在我需要合并git repo与项目的另一个版本,不知何故我进入了linebreak-hell。事实证明,git认为所有文件都已更改。我玩各种git设置(autocrlf),dos2unix等等,没有任何效果。


看完文件之后我发现了以下情况:

在原始仓库中,大多数文件都是这样的:

  • 前9行(版权标题)有unix换行符,而文件的其余部分有windows换行符。
  • 有些文件(我猜它们是由前一个维护者编辑的)有unix换行符 仅

在我从同事处获取的文件中,情况如下:

  • 一些文件没有变化,
  • 大多数文件(即使没有其他相关更改)都有Windows换行符(即版权标题已更改),现在也会错过文件末尾的换行符。

有人知道如何清理这个烂摊子吗?

我想我可以很容易地将整个代码库转换为unix样式行结尾,但问题是,当我得到第三方应用程序的新版本时,我将不得不再次关心所有那些混乱。< / p>

1 个答案:

答案 0 :(得分:0)

我最终做了以下事情:

  1. 克隆了回购,
  2. 已执行find . -type f -exec dos2unix {} \;
  3. 已执行git add .
  4. 将我的同事的文件复制到结帐回购(覆盖任何内容),
  5. 再次执行find . -type f -exec dos2unix {} \;
  6. 已执行git add -v -n . > /tmp/changed_files
  7. 这样我就得到了一个真正有相关变化的文件列表,所以我只能提交那些(快速和彻底的解决方案,而无需重新规范整个回购)。