本文将为您提供关于设置和使用Meld作为你的gitdifftool和mergetool的详细介绍,我们还将为您解释gitmergetool配置的相关知识,同时,我们还将为您提供关于eclipsegit
本文将为您提供关于设置和使用 Meld 作为你的 git difftool 和 mergetool的详细介绍,我们还将为您解释git mergetool 配置的相关知识,同时,我们还将为您提供关于eclipse git 解决冲突 解决 mergetool 不能使用问题、git diff/difftool、git difftool 详解、git difftool和mergetool图形化的实用信息。
本文目录一览:- 设置和使用 Meld 作为你的 git difftool 和 mergetool(git mergetool 配置)
- eclipse git 解决冲突 解决 mergetool 不能使用问题
- git diff/difftool
- git difftool 详解
- git difftool和mergetool图形化
设置和使用 Meld 作为你的 git difftool 和 mergetool(git mergetool 配置)
尽管这个问题和答案中的大部分信息都可以在StackOverflow上找到,但它分布在很多页面上,并且在其他错误或误导性的答案中。我花了一段时间才把我想知道的一切拼凑起来。
有很多不同的程序可以用作您的 git difftool 和 mergetool,对于哪个是最好的当然没有共识(意见、要求和操作系统会明显不同)。
以下2个问题将在我的回答中得到回答:
- 如何设置和使用 Meld 作为我的 git difftool?
- 如何设置和使用 Meld 作为我的 git 合并工具?
注意: difftool 和 mergetool 不必使用相同的程序,可以为两者设置不同的程序。
答案1
小编典典如何设置和使用 Meld 作为我的 git difftool?
git difftool使用 GUI 差异程序(即 Meld)显示差异,而不是在终端中显示差异输出。
尽管您可以在命令行上设置 GUI 程序,但在文件-t <tool> / --tool=<tool>
中配置它更有意义。.gitconfig
[注意:请参阅底部有关转义引号和 Windows 路径的部分。]
# Add the following to your .gitconfig file.[diff] tool = meld[difftool] prompt = false[difftool "meld"] cmd = meld "$LOCAL" "$REMOTE"
[注意:这些设置不会改变其行为git diff
将继续照常运行。]
您使用git difftool
的方式与使用git diff
. 例如
git difftool <COMMIT_HASH> file_namegit difftool <BRANCH_NAME> file_namegit difftool <COMMIT_HASH_1> <COMMIT_HASH_2> file_name
如果配置正确,将打开一个 Meld 窗口,使用 GUI 界面显示差异。
Meld GUI 窗口窗格的顺序可以通过$LOCAL
和$REMOTE
in的顺序来控制cmd
,即哪个文件显示在左窗格中,哪个文件显示在右窗格中。如果您希望它们反过来,只需像这样交换它们:
cmd = meld "$REMOTE" "$LOCAL"
最后,该prompt = false
行只是停止 git 提示您是否要启动 Meld,默认情况下 git 会发出提示。
如何设置和使用 Meld 作为我的 git 合并工具?
git mergetool允许您使用 GUI 合并程序(即 Meld)来解决合并期间发生的合并冲突。
与 difftool 一样,您可以使用命令行在命令行上设置 GUI 程序,但和以前一样,在文件-t <tool> / --tool=<tool>
中配置它更有意义。.gitconfig
[注意:请参阅底部有关转义引号和 Windows 路径的部分。]
# Add the following to your .gitconfig file.[merge] tool = meld[mergetool "meld"] # Choose one of these 2 lines (not both!) explained below. cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED" cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
您不git mergetool
用于执行实际的合并。在使用之前,git mergetool
您可以使用 git 以通常的方式执行合并。例如
git checkout mastergit merge branch_name
如果存在合并冲突,git 将显示如下内容:
$ git merge branch_nameAuto-merging file_nameCONFLICT (content): Merge conflict in file_nameAutomatic merge failed; fix conflicts and then commit the result.
此时file_name
将包含带有合并冲突信息的部分合并文件(即包含所有>>>>>>>
和<<<<<<<
条目的文件)。
Mergetool 现在可用于解决合并冲突。您可以通过以下方式轻松启动它:
git mergetool
如果配置正确,将打开一个 Meld 窗口,显示 3 个文件。每个文件都将包含在其 GUI 界面的单独窗格中。
在上面的示例.gitconfig
条目中,建议使用 2 行作为[mergetool "meld"]
cmd
行。事实上,高级用户配置cmd
线路的方式有很多种,但这超出了本回答的范围。
这个答案有 2 条替代cmd
线,它们之间将迎合大多数用户,对于希望将该工具提升到下一个复杂程度的高级用户来说,这将是一个很好的起点。
首先是参数的含义:
$LOCAL
是当前分支中的文件(例如 master)。$REMOTE
是正在合并的分支中的文件(例如,branch_name)。$MERGED
是其中包含合并冲突信息的部分合并文件。$BASE``$LOCAL
是and的共享提交祖先,$REMOTE
也就是说文件与$REMOTE
最初创建包含的分支时一样。
我建议你使用:
[mergetool "meld"] cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
要么:
[mergetool "meld"] cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED" # See ''Note On Output File'' which explains --output "$MERGED".
选择是使用$MERGED
还是$BASE
介于$LOCAL
and之间$REMOTE
。
无论哪种方式,Meld 都会在左右窗格中显示 3个窗格$LOCAL
,在中间窗格中显示 和。$REMOTE``$MERGED``$BASE
在这两种情况下,中间窗格都是您应该编辑以解决合并冲突的文件。不同之处在于您更喜欢哪个起始编辑位置;$MERGED
对于包含具有合并冲突信息的部分合并文件的文件或$BASE
对于$LOCAL
and的共享提交祖先$REMOTE
。[由于这两cmd
行都很有用,我将它们都保存在我的.gitconfig
文件中。大多数时候我使用该$MERGED
行并且该$BASE
行被注释掉,但是如果我想使用该$BASE
行代替,可以交换注释掉。]
输出文件注意事项:不要担心无论是否在行中--output "$MERGED"
使用过或之前使用过。该选项只是告诉 Meld git 希望将冲突解决文件保存在哪个文件名中。无论您是使用还是作为起始编辑点,Meld 都会将您的冲突编辑保存在该文件中。cmd``$MERGED``$BASE``cmd``--output``$MERGED``$BASE
编辑中间窗格以解决合并冲突后,只需保存文件并关闭 Meld 窗口。Git 将自动进行更新,当前分支(例如 master)中的文件现在将包含您在中间窗格中最终得到的任何内容。
git 将通过附加.orig
到原始文件名来备份部分合并的文件,其中包含合并冲突信息。例如file_name.orig
。在检查您对合并感到满意并运行您可能希望执行的任何测试后,.orig
可以删除该文件。
此时,您现在可以进行提交以提交更改。
如果在 Meld 中编辑合并冲突时,您希望放弃使用 Meld,则退出 Meld,而不在中间窗格中保存合并解决方案文件。git 将回复消息file_name seems unchanged
然后询问Was the merge successful? [y/n]
,如果您回答,n
则合并冲突解决将被中止,文件将保持不变。请注意,如果您在任何时候将文件保存在 Meld 中,那么您将不会收到来自 git 的警告和提示。[当然你可以直接删除文件,然后用.orig
git 为你制作的备份文件替换它。]
如果您有超过 1 个文件存在合并冲突,那么 git 将为每个文件打开一个新的 Meld 窗口,一个接一个,直到它们全部完成。它们不会同时打开,但是当您完成对一个冲突的编辑并关闭 Meld 时,git 将打开下一个,依此类推,直到所有合并冲突都已解决。
在实际git mergetool
项目中使用它之前,创建一个虚拟项目来测试它的使用是明智的。请务必在测试中使用包含空格的文件名,以防操作系统要求您转义行中的引号,请参见下文。cmd
转义引号字符
某些操作系统可能需要cmd
转义引号。经验不足的用户应该记住,配置命令行应该使用包含空格的文件名进行测试,如果这些cmd
行不适用于包含空格的文件名,请尝试转义引号。例如
cmd = meld \"$LOCAL\" \"$REMOTE\"
在某些情况下,可能需要更复杂的引号转义。下面的第一个 Windows 路径链接包含对每个引号进行三次转义的示例。这很无聊,但有时是必要的。例如
cmd = meld \\\"$LOCAL\\\" \\\"$REMOTE\\\"
Windows 路径
Windows 用户可能需要在 Meldcmd
行中添加额外的配置。他们可能需要使用 的完整路径meldc
,该路径旨在从命令行在 Windows 上调用,或者他们可能需要或想要使用包装器。他们应该阅读下面链接的StackOverflowcmd
页面,这些页面是关于为 Windows 设置正确的 Meld 行的。由于我是 Linux 用户,因此我无法测试各种 Windowscmd
行,也没有关于该主题的更多信息,除了建议使用我的示例并添加 Meld 或 的完整路径meldc
,或者将 Meld 程序文件夹添加到您的path
.
使用 Meld 忽略尾随空格
Meld 有许多可以在 GUI 中配置的首选项。
在首Text Filters
选项选项卡中,有几个有用的过滤器可以在执行差异时忽略评论等内容。尽管有过滤器可以忽略All whitespace
和Leading whitespace
,但没有忽略Trailing whitespace
过滤器(这已被建议作为 Meld 邮件列表中的附加项,但在我的版本中不可用)。
忽略尾随空格通常非常有用,尤其是在协作时,并且可以使用 Meld 首Text Filters
选项选项卡中的简单正则表达式轻松手动添加。
# Use either of these regexes depending on how comprehensive you want it to be.[ \t]*$[ \t\r\f\v]*$
我希望这对每个人都有帮助。
eclipse git 解决冲突 解决 mergetool 不能使用问题
eclipse git 解决冲突 解决 mergetool 不能使用问题
-
本地代码
-
远程代码
第一步 --> 同步远程资源库,检查是否存在冲突
这里有冲突出现
第二步 --> 如果存在冲突,将本地代码提交到本地仓库
**注意:**这里是点击 commit
,而不是点击 commit push
第三步 --> pull远程代码
第四步 --> 使用 merge tool 解决冲突
右键文件,选择 merge tool
第五步 --> 解决冲突
上传自己的本地代码到远程
点击 commit push
完成操作!
原文出处:https://www.cnblogs.com/upuptop/p/12215098.html
git diff/difftool
参考好文:使用命令和P4Merge进行diff::https://www.cnblogs.com/cgzl/p/8597066.html
git difftool 即可弹出比较工具的界面 哈哈
===========================
本地区域
git diff/difftool filepath
不带任何命令参数,工作区(本地文件)与暂存区比较,后面不带filepath的话,比较所有不同。Filepath可以时文件名子或文件夹。
git diff/difftool HEAD filepath
工作区与HEAD (当前工作分支, 最后一次commit) 比较。
git diff/difftool --staged filepath
暂存区与HEAD比较
git diff commitIDx commitIDy
比较两次commit的区别,commitIDx 和commitIDy都表示commit的 id,最后一次commit可以用HEAD表示。 commitIDy内容显示在界面右侧。
git diff HEAD HEAD^
比较的是HEAD 和 HEAD的上一次
git diff branchName filepath
当前分支的文件(filepath)与branchName 分支的文件进行比较!
拓展:
git diff branch1 branch2 -- path/file.txt (可以不加--)
对比两个分支中的同一个文件,,branch可以时远端的origin/branch1; 若不指定file的话,对比两个分支所有的不同之处。
git diff commitId filepath 与某一次提交进行比较 - 待验证
本地vs远端
git diff/difftool branchX origin/branchY
这就是比较本地的branchX分支和远程的branchY分支. 也可用于比较两个本地的分支!
git difftool 详解
一、如何比较两个版本之间的差异
1.显示版本得到版本的commit id
2.执行difftool命令
按Y进行比较,我用的是DiffMerge这个软件对代码进行比较的
二、比较当前所修改的内容
git difftool
git difftool和mergetool图形化
1.当然是先安装Beyond Compare3 (此处省略安装步骤,自行百度)
2.设置difftool
git config --global diff.tool bc3
git config --global difftool.bc3.path "/usr/bin/bcompare
git config --global difftool.prompt false
3.设置mergetool
git config --global merge.tool bc3
git config --global mergetool.bc3.path "/usr/bin/bcompare"
git config --global mergetool.bc3.trustExitCode true
____________________________________________________________________________________________
Windows git difftool和mergetool图形化
1.当然是先安装Beyond Compare3 (此处省略安装步骤,自行百度)
2.设置difftool
git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
3.设置mergetool
git config --global merge.tool bc3
git config --global mergetool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
git config --global mergetool.bc3.trustExitCode true
____________________________________________________________________________________________
使用时:
diff时,用git difftool <file_name>来查看就会直接弹出bcompare.
merge时,要先用git merge <branch_name> 来merge一下,然后如果提示merge有冲突,才用git mergetool来调用bcompare来merge
---------------------
我们今天的关于设置和使用 Meld 作为你的 git difftool 和 mergetool和git mergetool 配置的分享就到这里,谢谢您的阅读,如果想了解更多关于eclipse git 解决冲突 解决 mergetool 不能使用问题、git diff/difftool、git difftool 详解、git difftool和mergetool图形化的相关信息,可以在本站进行搜索。
本文标签: