为什么我不能在Windows上使用TortoiseMerge作为我的git合并工具?
我正在尝试执行有史以来的第一个git合并(令人兴奋!),但无法获得git gui(0.13.gitgui,git 1.7.4.4.msysgit.0)在识别tortoisemerge(1.6.11.20210 x64)上Windows 7.基于一个类似的问题,我已经进行了以下配置更改: $ git config --global merge.tool tortoisemerge $ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"' $ git config --global --list ...snip... merge.tool=tortoisemerge mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BA
2 2023-12-05
编程技术问答社区
如何使用Visual Studio Code作为Git MergeTool的默认编辑器,包括用于3-way合并
今天,我试图在Windows命令提示符上使用git mergetool,并意识到它默认使用 vim 很酷,但是我更喜欢 vs code . 我如何将 Visual Studio Code 作为处理合并冲突的GUI(甚至是扩散工具)的GUI? 是否可以设置 vs代码可以获取 解决方案 更新:从 Visual Studio代码1.70 三向合并 添加了改进. 视觉和进一步的解释 . 如 Visual Studio Code 1.13 >更好的合并已集成到 Visual Studio代码的核心. 将它们连接在一起的方法是修改您的.gitconfig,您有两个选项. 要使用命令行条目执行此操作,请输入其中的每个:(注意:如果在Windows命令提示符上替换' ".感谢Iztok Delfin和E4Rache帮助澄清这一点. ) git config --global merge.tool vscode git config --global mergeto
2 2023-11-24
编程技术问答社区
如何使用vimdiff来解决git合并冲突?
我刚刚将分支合并到我的主人中,我得到了Automatic merge failed; fix conflicts and then commit the result.现在我运行git mergetool,而Vimdiff则以下图打开.我不知道如何使用Vimdiff.每个面板在这里的含义是什么,我应该如何继续解决合并冲突? 解决方案 所有四个缓冲区都提供了同一文件的不同视图.左上角缓冲区(本地)是该文件在目标分支中的外观(您正在合并到的内容).右上角的缓冲区(远程)是该文件在源分支中的外观(您正在合并的位置).中间缓冲区(基础)是两个的共同祖先(因此您可以比较左右版本的彼此差异). 我可能会在以下几点上误解.我认为合并冲突的来源是两个文件自基础以来都更改了文件的相同部分. Local将报价从Double更改为单个,遥控器进行了相同的更改,但也将背景值从颜色更改为URL. (我认为合并还不够聪明,无法注意到本地的所有更改也存在于遥控器中;它只是知道本地已经在远程相同的地方进行
0 2023-11-19
编程技术问答社区
如何让git mergetool打开的gvimdiff在标签中一次性打开所有文件?
通常git -c merge.tool=gvimdiff mergetool在批处理模式下打开要合并的文件: Normal merge conflict for '...': {local}: modified file {remote}: modified file 4 files to edit ... seems unchanged. Was the merge successful? [y/n] n merge of ... failed Continue merging other unresolved paths (y/n) ? y Normal merge conflict for '...': {local}: modified file {remote}: modified file 4 files to edit modules ... seems unchanged. Was the merge successful? [y/n] n merg
2 2023-10-14
编程技术问答社区
如何在Windows上使用Beyond Compare 3作为外部SVN(SlikSVN)的合并和差异工具?
我想将SVN命令行client sliksvn配置为超越3作为外部diff and Merge工具.如何做? 解决方案 添加Beyond Compare 3文件夹到Windows PATH.如果您不知道检查此答案 - 只需Python路径Beyond Compare 3 path. > in Beyond Compare 3文件夹创建bcomp-diff.bat文件: @ECHO OFF SET DIFF="bcomp.exe" SET LEFT=%6 SET RIGHT=%7 %DIFF% %LEFT% %RIGHT% in Beyond Compare 3文件夹创建bcomp-merge.bat文件: @ECHO OFF SET DIFF3=BComp.exe SET BASE=%1 SET THEIRS=%2 SET MINE=%3 SET MERGED=%4 REM left MINE REM center BASE REM righ
4 2023-10-06
编程技术问答社区
git: 更新一个php-script,但保留自己的改动
我正在跟踪带有git的PHP软件的更改.我只有一个主分支,大约有10个提交,第一个提交是软件的原始版本1.0. 现在我看到了PHP-Software版本1.1的所有者. 对我而言,最简单的方法是更新软件的最简单方法,但也要保留自己的更改并将其与Git Mergetool合并?我应该使用补丁程序或使用未触及的版本更新创建另一个分支? 谢谢! 解决方案 典型的方法是在软件之上创建一个带有本地更改(例如"本地")的分支: git checkout origin/master git checkout -b local ....edit files.... git commit 现在,只要有上游更新,您就可以使用rebase轻松重新启用更改: git fetch git rebase origin/master 如果您已经在主分支中有一些合并历史记录,请尝试使用它并使用" git diff"来制作完整的作品与上游的完整补丁 - 即使没有git工具,也
10 2023-05-21
编程技术问答社区
不能在`git am`或`git apply`或`patch`中使用`git mergetool`。
git mergetool很棒(就我而言,我使用kdiff3).但是,不可能使用它从git am或git apply(甚至使用patch命令)来解决冲突.实际上,梅尔盖尔需要3个文件(基本和两个修改版本),而git am使用修改版本和一个补丁. 您知道一种使用git mergetool用于git am>>> 的冲突的方法 我认为有必要从修改版本和补丁中猜出基本文件.如果您单独考虑每个块,它看起来很棘手,但并非不可能. 解决方案 AS torek 提到, git mergetool 如果您是: 做进行常规的git am,但使用 这个问题仍然是常规补丁命令.
14 2023-05-21
编程技术问答社区
为什么我不能为Git配置一个外部difftool或mergetool?
我正在尝试在Windows 10下为Git配置外部差异和Mergetool. 一切都在告诉我要输入两个git命令,如以下命令. 有些人说要使用wrapper.sh,而另一些人则说这是不必要的. git config --global diff.tool diffmerge (第二行看起来像这样:) git config --global difftool.diffmerge.cmd "path to sgdm.exe or some_wrapper.sh" $LOCAL $REMOTE** 这对我不起作用.我也尝试了: git config --global difftool.diffmerge.cmd C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\" git config --global difftool.diffmerge.cmd C:/Pro
24 2023-04-22
编程技术问答社区
如何将KDiff3配置为git的合并工具和差异工具?
最近我使用的是gitextension 2.46,但是具有相同的git版本为1.9.4.msysgit.2.我愿意仅使用git命令,我卸载了gitextension,并安装了 git 和 href = a href = " http://kdiff3.sourceforge.net" rel =" noreferrer"> kdiff3 . 当我合并并发生冲突时,我运行以下命令: git mergetool 然后我收到消息: 合并工具kdiff3不能以'kdiff3'. 可用 我猜一定是kdiff3路径. 环境 OS:Windows 10 git 2.6.1.windows.1 kdiff3 0.9.98(64位) 问题: 我必须在.gitConfig文件中为命令git mergetool配置什么才能使用版本 local , remote ,基础和合并对冲突文件? 如何将其配置为将其用作差异工具? 解决方案 这些网站几乎
52 2023-04-22
编程技术问答社区
如何让git在有合并冲突时自动打开mergetool?
如何使git自动运行git mergetool任何合并冲突?这应该适用于所有合并,使用merge,rebase,pull等. 解决方案 您还不能(迄今为止)让git做到这一点. 这可能是一个可以接受的解决方法. 在您的~/.bashrc中创建一个函数: git() { if [[ $1 == "merge" ]] || [[ $1 == "rebase" ]] || [[ $1 == "pull" ]]; then command git "$@" rc=$? if [[ $rc == 1 ]]; then echo "There are conflicts, better run git-mergetool!!!" # There might be some other condition that returns a '1', # if so you can add another ch
12 2023-03-26
编程技术问答社区
有什么方法可以让Git把文件标记为冲突的吗?
可以提交包含冲突数据的文件.有没有办法将这些文件再次标记为冲突,以便运行git mergetool将生成必要的文件并运行合并工具? 解决方案 您可以使用git checkout --conflict=merge -- file获得带有冲突标记的文件内容,但是如果您使用git add file清理了索引(或者如果GUI为您做到了),则将行不通. 有git update-index --unresolve,但是它是骇客的,并且不能可靠地工作.我认为它还恢复的状态还不够用于Git-Mergetool. 您可能必须重做合并,或使用git update-index --cacheinfo手动设置阶段版本... git-stash可以帮助您正确保存解决冲突. 其他解决方案 如果索引已经处于冲突状态,只需使用--conflict=merge flag查看文件: git checkout --conflict=merge file 如果索引是干净的,因为未解决的文件
16 2023-03-26
编程技术问答社区
Git:为difftool和mergetool配置模式
在Mercurial中,可以为外部差异和合并工具定义模式(因此,仅用于与指定模式匹配的文件): [diff-patterns] **.ext = difftool [merge-patterns] **.ext = mergetool 如何在git中定义此类模式? [Mergetool] git-config(1)中的部分没有提及任何模式,掩码或任何类似的模式. 编辑: 这是我的.git/config: 的相关部分 [diff] tool = difftool [difftool "difftool"] cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE" [merge] tool = mergetool [mergetool "mergetool"] cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED" 现在
26 2023-03-25
编程技术问答社区
当git revert以错误信息中止时,我应该怎么做?
好吧,所以当我尝试恢复提交(用git)时,我有时会遇到错误.我所做的就是 git revert ,它给了我这个消息: error: could not revert hint: after resolving the conflicts, mark the corrected paths hint: with 'git add ' or 'git rm ' 这是否意味着我应该使用git mergetool并解决任何冲突?完成此操作后,我可以添加/rm然后提交,并且还原已完成? 是的 git revert之后尚未完成该提交 - 如果您看到.git/merge_msg,您会看到类似的东西: 还原"添加还原" 这恢复了提交 C1366607F15A838434948CB0BCBF8ECE48BB460. 冲突: 还原 因此
22 2023-03-22
编程技术问答社区
将IntelliJ作为git mergetool使用,总是在启动后立即退出
我已经在Mac上配置了Intellij为我的diff和mergetool,但是git启动它,命令行总是立即返回,而不是等待差异完成,这意味着所制定的更改未在磁盘上反映. 我的配置是: [mergetool "intellij"] cmd = /Applications/IntelliJ\\ IDEA\\ 13\\ CE.app/Contents/MacOS/idea merge \ $(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") \ $(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\") \ $(cd $(dirname \"$BASE\") && pwd)/$(basename \"$BASE\") $(cd $(dirname \"$MERGED\")
28 2023-03-16
编程技术问答社区
git告诉我,我合并了冲突,但也告诉我没有文件需要合并
我对分支进行了一些更改new. 我检查到master. 当我尝试合并时: $ git merge new Auto-merging js/site.js CONFLICT (content): Merge conflict in js/site.js Automatic merge failed; fix conflicts and then commit the result. 所以我安装了kdiff3并配置了我的配置文件,当我尝试使用Mergetools时,我得到了: $ git mergetool kdiff3 No files need merging 我运行了一个差异,它输出了以下内容: diff --cc js/site.js index 8c17d62,7955b13..0000000 --- a/js/site.js +++ b/js/site.js @@@ -72,4 -81,18 +81,22 @@@ function doSma
12 2023-01-31
编程技术问答社区
git cherry-pick:如何只考虑提交所修改的行(即,不考虑周围的环境)?
我有一个带有两个分支的项目: D---E branch1 / ---A---C branch2 我想在分支2上应用提交E(但不是D). 我使用 git樱桃 - pick 和 git mergetool (带有 meld )进行解决冲突.到目前为止,一切都很好. 但是,假设提交C之后的文件状态为 lineC1 lineC2 ,提交E引入的更改是 -lineC1 +lineE1 -lineC2 +lineE2 我希望默认情况下的结果为 lineE1 lineE2 (即,E1和E2行根据提交E变化,但内部上下文从当前分支中保留). 相反,默认情况下的梅尔盖尔(即meld)显示: lineC1 lineC2 确实没有道理. 我如何指示git樱桃挑选以使上下文免于分支2,仅考虑对提交e? 修改的行的更改 解决
10 2022-10-13
编程技术问答社区
我怎样才能强迫mergetool GUI(kdiff3)总是显示出来?
我如何迫使Mergetool GUI始终显示并禁用任何自动解决方案? 有时在合并期间发生冲突时,我使用梅尔盖尔(Mergetool)时,在我击中 enter 问题上,它立即返回,"命中返回启动合并分辨率工具(kdiff3)" ,没有显示GUI,冲突似乎已经解决. 我已经配置为使用 kdiff3 >按照梅尔盖尔指定.我知道KDIFF3中有一个选项"自动保存和退出合并无冲突" ,从理论上讲可能会导致所描述的行为,但是我一直在禁用此选项. > 另外,直接在git mergetool gitconfig中直接有 trust exitCode 选项,我已经设置为true,但是即使我将其设置为false,也未显示GUI. . 我不确定谁是自动解决的. Mergetool在某些预处理或kdiff3中? 我在Windows上运行并安装了Git-Extensions. 在这里也提出了与KDIFF3相似的类似问题: kdiff3赢得了t用Mergetool命令打开 解决方
20 2022-10-13
编程技术问答社区
Git Stash Pop-用mergetool解决冲突
so, ,我突然遇到了这一点,因为它以史诗般的错误形式,使我的应用程序毫无用处,但是git stash pop(或应用)自动处理合并冲突.当这样做时,它将两个版本添加到文件中: >>>>>> Stashed changes 最初不知道这一点,因为这些添加行无效XML文件. 所以,我想知道是否有一种方法可以执行git藏匿处以不自动合并,而是要将冲突留在适当的位置,以便可以通过git mergetool解决它们,而不是要求我在编辑器中打开每个文件并处理" MERTE"过程,而无需为合并冲突而设计的工具. 谢谢 Jaeden" Sifo Dyas" Al'raec Ruiner 解决方案 git stash apply使用的合并过程 - 这是git stash pop的上半年 - 与其他任何合并相同
72 2022-10-12
编程技术问答社区
如何在git上进行3-way visual diff?
我想做一个在两个不同分支中存在的单个文件的3向差异,即每个分支中的最后一个提交,也考虑共同的祖先. 我想使用允许进行三路比较的外部工具. 我正在考虑使用git difftool,但据我所知,它只允许比较给定文件的任何2个版本. 我可以使用Mergetool,但这迫使我首先运行GIT合并,以便设置基础,远程和局部变量.我不想运行git合并.我只想先做一个三向差异,以查看两个分支中的文件上完成的更改. 有没有选择使用Difftool或Mergetool? 谢谢 解决方案 一种解决方案是Visual 例如,您可以在文件之间打开不同分支之间的三向差异: diffuse -r master -r HEAD -r upstream file.txt 其他解决方案 安装您喜欢的3条差异工具,我的首选是 kdiff3 ....../p> 开放以编辑git全局配置: git edit --global --edit 在您选择的工具中调整它: [diff]
52 2022-10-11
编程技术问答社区
查看单个文件历史中`x`次提交的完整文件差异(该文件托管在git中)。
说我在git中有一个名为filex.code的文件,我想查看该文件的最后一个x版本的完整代码 每个更改的部分突出显示了 - 全部在一个地方.因此,x pan的提交历史filex.code几乎就像我在做x paned diff,但要查看历史版本而不是从不同的分支合并. 更大的x越好. CrossPlatform会很棒,但是三大作品中的任何一个.能够编辑最新版本也很棒,但是只读可视化就足够了. 请注意,这不同于简单的历史记录到一个文件,所以原本很棒的 gitk path/to/file (或Sourcetree或您喜欢的任何视觉git客户端)我在找. git log -p 也很接近,其输出诱人包含了我想要的所有信息,只是它全部都在一个线性,几乎是"程序性"输出格式,而不是像您最喜欢的三板gui'd Mergetool一样的优质,相对非等级的视觉形式. (编辑:另一个非常酷的选项,最终仍然会遇到仅显示每行最新源和线性输出的缺点, git blame ,但很酷.) 因此,
54 2022-10-11
编程技术问答社区