首页 > 解决方案 > Git:行之间的强制比较

问题描述

我目前正在使用 git 作为跟踪一些机器人源代码的一种方式,它或多或少地采用纯文本文件的形式。

使用 Git 的部分动机是,在会议中,我能够使用强大的 Visual Studio Code 扩展:Git Lens 拉出一个提交和另一个提交之间的差异比较。

这允许非技术精通的人(我通常向他们展示)获得关于代码中所做更改的简短口头历史,更改背后的动机(以提交消息的形式),以及作为屏幕上的图形,详细说明更改的字符(Gitlens UI 的形式)

直到今天一切都很顺利。一般来说,随着文件逐渐变化,每次我都能将文件中的差异拉出来并显示在屏幕上,并且通常逐行映射变化。

然而今天,整个文件经历了更具变革性的变化,现在git认为相同的行实际上并非如此。它认为有一堆缺失/删除​​的行实际上没有,并且还认为某些行不匹配时匹配。

我知道文件如何转换的一对一关系,如有必要,我有足够的时间手动执行此操作。我只是希望能够显示更改了哪些行,可能会强制显示 git 工具如何理解这些更改。我希望能够在会议中向人们展示这些更改,并将实际更改的线路排成一行。

侧面动机:到目前为止,我的公司采用版本控制的速度很慢。然而,有些人更喜欢使用版本控制,但大多数人都需要跟上速度。我能够解决这个问题的额外好处是我能够转身向其他人展示实物。

例子:

变化 原件

即使我不得不强制,如何让这两个提交正确排列?

提前致谢!

标签: gitvisual-studio-code

解决方案


平原git diff给你什么?

我对Git Lens不熟悉,但是在命令行上你可以试试git diff --anchor="POSITIONER_BASE 1"(从截图中很难看出“BASE”和“1”之间有多少空格,请根据实际数据调整)。这样做是将其余的差异从以该字符串开始的行中锚定。

git diff有一些其他选项来指定差异算法。你也可以和他们一起玩。例如--minimal,使其更难产生较小的差异。


推荐阅读