【问题标题】:Git (via TortoiseGit) modifies compiled file when a conflict is detected making it corruptedGit(通过 TortoiseGit)在检测到冲突时修改已编译的文件,使其损坏
【发布时间】:2020-05-27 17:23:59
【问题描述】:

我对 git 还很陌生,很抱歉可能不是 100% 清楚。

我正在处理已编译的文件(更准确地说是 Rockwell 为 PLC 工业自动化中的 Studio5000 提供的 .acd 文件)。我很确定文件的格式并不重要。我们希望与多个用户一起处理项目。我们使用 Git 作为集中式服务器和 PLC 的品牌合并工具(本例中的示例是 Rockwell)。我们已经在 TortoiseGit 中将 Rockwell 的 Merge 工具设置为 MergeTool,一切都“大部分”正常。

但是,当我们拉动刷新本地存储库时,100% 会发生冲突,因为该文件不是 Git 通常使用的 .txt 文件。问题是,当我们拉动(发生冲突)并告诉 Git 我们要合并时,它会修改本地文件(我猜是通过在文件中的任何地方放置 THEIRS 和 OURS )即使我们没有想要以这种方式解决冲突,它会破坏默认阅读器的文件。文件 BASE、REMOTE(THEIRS) 和 LOCAL(OURS) 仅在我们使用 TortoiseGit 的编辑冲突时出现(当我们指定要合并 2 个版本时它们不会自动出现)。

我的问题是没有经验和/或无人注意的人可以轻松地将损坏的文件推送到服务器上,因为解决损坏的文件(这是一键式)允许用户提交。我知道我们可以很容易地恢复/重置到以前的提交,但是对于日志历史来说有点混乱,我们几乎不想跟踪损坏的版本。这也让我们浪费了很多时间,因为“普通用户”可能很难恢复到以前的版本并且可能需要帮助。

我首先要做的是:当用户尝试合并文件时,Git 不会修改工作目录(工作树等)中的已编译文件。

第二:我很确定这是可能的 我只是不知道怎么做,但是我想在发生冲突时选择合并时自动生成 BASE、LOCAL 和 REMOTE 文件,这样会更直接必须手动选择编辑冲突选项。我突然想到 .docx 文件已经这样做了,但我的 .acd 文件没有。有解释吗?

正如我所说,我还很新,对任何想法都很开放! :)

【问题讨论】:

    标签: git git-merge tortoisegit tortoisegitmerge


    【解决方案1】:

    TortoiseGit 默认不会修改冲突文件,但 Git 会修改文本文件。

    Git 确实在基于文本的文件中包含冲突标记。如果您不希望这种情况发生,您可以尝试添加一个.gitattribtues 文件并将您的文件声明为binarybinary-diff -merge -text 的快照,因此如果文件是文本文件并且您仍想查看差异,-merge 也可以是一个选项。

    您还可以创建一个提交挂钩,在允许提交之前检查文件中可能存在的冲突标记(参见https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-hooksprevent file with merge conflicts from getting committed in git)。

    【讨论】:

    • 这很有意义,因为当我尝试打开文件时,它是文本结构的!但我猜 Git 的合并并不完全符合需要做的事情。在我试图合并的文件的开头也写了这条消息:这个文件是由 RSLogix 5000 软件生成的。不要更改此文件我会尝试并让您知道结果,因为没有太多关于将 Git 与 Web 自动化软件集成的信息。谢谢!
    • 将文件标记为-merge 应该可以解决问题。 Git 仍然会提示冲突,但不会改变文件,你也可以使用merge=ours 自动解决。
    • 有这方面的消息吗? @louloubaillargeon
    • 嗨 MrTux。还没有,但我今天正在做那个项目,我会试试这个!
    • 嗨@MrTux!在 gitattributes 中将文件标记为 -merge 就可以了!不再有损坏的文件,当我们尝试与 Git 合并时,PLC 合并工具会立即打开。这对我们有很多好处。对于想知道我到底做了什么的人:1:在 repo 中创建 .gitattributes 文本文件 2:添加 *.acd -merge 3:Git (Tortoise Git) 仍将文件显示为冲突但不添加任何合并箭头。跨度>
    猜你喜欢
    • 2017-08-29
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多