我已经将我的 Git difftool 配置为 VS Code:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --new-window --diff $LOCAL $REMOTE
prompt = false
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当有多个文件要差异时,它们会一个一个打开(VS Code 以单个文件差异启动,我关闭 VS Code,打开下一个文件差异,等等)。
有没有办法配置 Git,以便在同一个 VS Code 实例中一次打开所有差异?
我想使用opendiff作为git diff的默认diff工具.这曾经工作但由于某种原因停止工作.我正在使用脚本:
echo opendiff $2 $5 > opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)
在.gitconfig中设置:
[diff]
external = ~/opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)
这最近停止了我的工作.怎么了?
更新:当我克隆一个新的存储库时,一切正常!奇怪!
是否有基于emacs的视觉差异工具可用?如果有多个工具可用,哪个更好,或者更具体哪个更容易使用?
你如何在git和emacs中设置所述diff工具?
为了澄清,我将经常从外部emacs访问这个.我通常从命令行运行git,目前我主要是在Windows上的Visual Studio中开发,虽然我也在Linux中开发(在这种情况下通常使用emacs或Geany)和Apple Mac(主要是命令行和emacs).
如果我目前正在Windows上的Visual Studio中进行开发,那么使用emacs for diff工具会有什么主要的缺点?
谢谢.
当我将文件添加到暂存时,我可以
$ git add my_file -p
Run Code Online (Sandbox Code Playgroud)
并选择我想要的舞台.
有没有办法合并/樱桃选择提交并应用块的差异块?
谢谢
有没有办法配置Git --dir-diff在执行时始终应用该选项
git difftool <commit> <commit>
Run Code Online (Sandbox Code Playgroud)
例如,逻辑上等同于:
[diff]
#tool = p4merge
tool = araxis
[difftool]
prompt = false
dirdiff = true # Is there something equivalent to this?
[mergetool "araxis"]
path = /Applications/Araxis Merge.app/Contents/Utilities/compare
Run Code Online (Sandbox Code Playgroud) 在我的工作流程中,我经常运行以下一对命令:
$ git status
M README.txt
M some/long/file/name
$ git diff some/long/file/name
Run Code Online (Sandbox Code Playgroud)
有没有办法,快速输入/ use_shortcat为长文件名而不复制它的名称(这个动作需要使用鼠标,它不像打字那么快)?也许是这样的git diff $2,$2从状态列表中第二个改变文件的位置......?
我正在尝试使用git diff --word-diff-regex =命令,它似乎拒绝任何类型的前瞻和外观.我无法确定正则表达式git使用的风格.例如
git diff --word-diff-regex='([.\w]+)(?!>)'
Run Code Online (Sandbox Code Playgroud)
作为无效的正则表达式返回.
我试图得到所有不是HTML标签的单词.因此,正则表达式的结果匹配应该是以下字符串的'Hello''World''Foo''Bar'
<p> Hello World </p><p> Foo Bar </p>
Run Code Online (Sandbox Code Playgroud) Stackoverflow上的这个问题似乎是耐心差异算法应用的一个很好的候选者.然而,在测试我的潜在答案时,我发现这git diff --patience不符合我的期望(在这种情况下,与默认的diff算法没有区别):
$ cat a
/**
* Function foo description.
*/
function foo() {}
/**
* Function bar description.
*/
function bar() {}
$ cat b
/**
* Function bar description.
*/
function bar() {}
$ git diff --no-index --patience a b
diff --git a/a b/b
index 3064e15..a93bad0 100644
--- a/a
+++ b/b
@@ -1,9 +1,4 @@
/**
- * Function foo description.
- */
-function foo() {}
-
-/**
* Function bar description.
*/
function …Run Code Online (Sandbox Code Playgroud) 您可能知道这个窗口,您可以在其中看到提交到旧提交的提交之间的差异.
你知道我怎么能看到完全相同的比较,但是在提交和之前的提交之间,它不一定是当前提交之前的一个提交.
我知道我可以按一个文件执行此操作,但我想为整个项目执行此操作.
我安装了最新的git并将其配置为突出显示移动的代码:
$ git config diff.colormoved default
Run Code Online (Sandbox Code Playgroud)
但3-4不会突出显示为已移动的代码.
这是独立的变化:
git ×10
git-diff ×10
commit ×1
diff ×1
emacs ×1
git-commit ×1
git-config ×1
git-status ×1
opendiff ×1
regex ×1