0

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

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

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

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

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

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

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

4

1 回答 1

0

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

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

您还可以创建一个提交挂钩,在允许提交之前检查文件中可能存在的冲突标记(参见https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-hooks防止在 git 中提交具有合并冲突的文件)。

于 2020-05-28T07:52:15.573 回答