Git(通过TortoiseGit)在检测到冲突导致其损坏时修改编译的文件

问题描述 投票:0回答:1

我对git还是很陌生,所以很抱歉可能不会100%清除。

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

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

我的问题是,没有经验的人和/或没有专心的人很容易在服务器上推送损坏的文件,因为解决损坏的文件(单击即可)允许用户提交。我知道我们可以很轻松地还原/重置为以前的提交,但是对于日志历史记录有点混乱,我们几乎不想跟踪损坏的版本。同样,这也使我们浪费了很多时间,因为“一般用户”可能会很难恢复到以前的版本,并且可能需要帮助。

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

[第二:我很确定这是可能的,我只是不知道如何做,但是当发生冲突时选择合并时,我想自动生成BASE,LOCAL和REMOTE文件,这将比以前更直接手动选择“编辑冲突”选项。在我看来,.docx文件已经准备好了,但是我的.acd文件却没有。有解释吗?

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

git-merge tortoisegit compiled mergetool tortoisegitmerge
1个回答
0
投票

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

Git确实在基于文本的文件中包含了冲突标记。如果您不希望发生这种情况,可以尝试添加.gitattribtues文件,然后将文件声明为.gitattribtuesbinary

您还可以创建一个提交挂钩,在允许提交之前检查文件中的possibel冲突标记(参见-texthttps://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-hooks)。

© www.soinside.com 2019 - 2024. All rights reserved.