我正在尝试一些我认为应该对我来说相当明显的东西,但事实并非如此.我正在尝试匹配一个不包含特定字符序列的字符串.我已尝试使用[^ab],[^(ab)]等等来匹配不包含'a'或'b'的字符串,或只包含'a'或仅'b'或'ba'但不匹配'ab'的字符串.我给出的例子不符合'ab'这是真的,但它们也不会单独匹配'a'而我需要它们.有一些简单的方法可以做到这一点吗?
当我执行a git diff或a时git log -p,如何获取与输出内联的源文件的行号?
我试着man git-diff | grep "line numbers"查一下,我试着谷歌搜索,但没有得到任何快速.
在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起工作时没有任何问题.然而,在Windows中它是一个不同的故事.
首先,我从我在这里找到的软件包中安装了Meld:https://code.google.com/p/meld-installer/
然后,我配置了我的.gitconfig,以支持Meld作为默认的mergetool
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
keepBackup = false
trustExitCode = false
Run Code Online (Sandbox Code Playgroud)
所以,当我遇到冲突时,我会做git difftool而Meld确实打开了.但是,Git写入传递给diff工具的文件的路径不正确.例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件.
Meld尝试打开C:\ Program Files(x86)\ Meld\meld\roses.txt.LOCAL.2760.txt,而不是打开C:\ repo\roses.txt.LOCAL.2760.txt.
有没有人遇到过这个或知道如何配置Git/Meld在Windows中正常工作?
我对git中受版本控制的大量文件做了一个简单的更改,我希望能够检查没有其他更改正在进入这个大型提交.
这些变化都是形式
- "main()",
+ OOMPH_CURRENT_FUNCTION,
Run Code Online (Sandbox Code Playgroud)
其中"main()"可以是任何函数的名称.我想生成不属于这种形式的所有更改的差异.
git diff的-G和-S选项非常接近 - 它们发现与字符串或正则表达式匹配的更改.
有没有办法做到这一点?
另一个问题描述了如何使用这种方法来否定正则表达式,我认为命令应该是
git diff -G '^((?!OOMPH_CURRENT_FUNCTION).)*$'
Run Code Online (Sandbox Code Playgroud)
但这只是返回错误消息
fatal: invalid log-grep regex: Invalid preceding regular expression
Run Code Online (Sandbox Code Playgroud)
所以我猜git不支持这个正则表达式功能.
我还注意到标准的unix diff有-I选项"忽略其行符合RE的变化".但我找不到用unix diff工具替换git自己的diff的正确方法.
我试图只获得已更改的新版本的行,而不是git diff显示的所有其他信息.
对于:
git diff HEAD --no-ext-diff --unified=0 --exit-code -a --no-prefix
Run Code Online (Sandbox Code Playgroud)
表明:
diff --git file1 file2
index d9db605..a884b50 100644
--- file1
+++ file2
@@ -16 +16 @@ bla bla bla
-old text
+new text
Run Code Online (Sandbox Code Playgroud)
我想看的只是:
new text
Run Code Online (Sandbox Code Playgroud)
可能吗?
当我运行时git diff,每个差异的标题部分以白色文本显示.因为我使用的是浅色背景,所以很难阅读,所以我想改变它.
我发现我可以改变diff输出中的其他颜色,如下所示(in .gitconfig):
[color "diff"]
old = green
new = red
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚要把标题颜色放在那里.更好的是,是否存在记录所有默认git config设置的位置?
'diff header'是指这样的行:
diff --git a/README.md b/README.md
index f102026..c5e3428 100644
--- a/README.md
+++ b/README.md
Run Code Online (Sandbox Code Playgroud)