相关疑难解决方法(0)

正则表达式和否定整个字符组

我正在尝试一些我认为应该对我来说相当明显的东西,但事实并非如此.我正在尝试匹配一个不包含特定字符序列的字符串.我已尝试使用[^ab],[^(ab)]等等来匹配不包含'a'或'b'的字符串,或只包含'a'或仅'b'或'ba'但不匹配'ab'的字符串.我给出的例子不符合'ab'这是真的,但它们也不会单独匹配'a'而我需要它们.有一些简单的方法可以做到这一点吗?

regex

185
推荐指数
6
解决办法
21万
查看次数

带行号的Git diff(带行号的Git日志)

当我执行a git diff或a时git log -p,如何获取与输出内联的源文件的行号?

我试着man git-diff | grep "line numbers"查一下,我试着谷歌搜索,但没有得到任何快速.

git line-numbers

85
推荐指数
7
解决办法
4万
查看次数

Git与Windows上的Meld合并工具

在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 meld

83
推荐指数
4
解决办法
6万
查看次数

忽略与git diff中的字符串匹配的更改

我对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的正确方法.

regex git diff

28
推荐指数
3
解决办法
6792
查看次数

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 git-diff

20
推荐指数
4
解决办法
1万
查看次数

如何在git diff中自定义diff头的颜色?

当我运行时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)

git

14
推荐指数
2
解决办法
2333
查看次数

标签 统计

git ×5

diff ×2

regex ×2

git-diff ×1

line-numbers ×1

meld ×1