Git diff: show ONLY changes not matching a pattern
Is it possible to tell git diff
to assume lines staring with some pattern as unchanged?
For example, consider the following:
$ git diff -U0
diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+ this is important
@@ -56,0 +58 @@
+ this is also important
Lines starting with an asterisk (regex pattern "^[[:space:]]**.*"
) are not important and I would like to filter files that contain changes in such lines only from the output of git diff
. In the example above, the output should report file_b.txt
changes only. Is it possible?
regex git git-diff
add a comment |
Is it possible to tell git diff
to assume lines staring with some pattern as unchanged?
For example, consider the following:
$ git diff -U0
diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+ this is important
@@ -56,0 +58 @@
+ this is also important
Lines starting with an asterisk (regex pattern "^[[:space:]]**.*"
) are not important and I would like to filter files that contain changes in such lines only from the output of git diff
. In the example above, the output should report file_b.txt
changes only. Is it possible?
regex git git-diff
add a comment |
Is it possible to tell git diff
to assume lines staring with some pattern as unchanged?
For example, consider the following:
$ git diff -U0
diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+ this is important
@@ -56,0 +58 @@
+ this is also important
Lines starting with an asterisk (regex pattern "^[[:space:]]**.*"
) are not important and I would like to filter files that contain changes in such lines only from the output of git diff
. In the example above, the output should report file_b.txt
changes only. Is it possible?
regex git git-diff
Is it possible to tell git diff
to assume lines staring with some pattern as unchanged?
For example, consider the following:
$ git diff -U0
diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+ this is important
@@ -56,0 +58 @@
+ this is also important
Lines starting with an asterisk (regex pattern "^[[:space:]]**.*"
) are not important and I would like to filter files that contain changes in such lines only from the output of git diff
. In the example above, the output should report file_b.txt
changes only. Is it possible?
regex git git-diff
regex git git-diff
asked Nov 23 '18 at 16:31
sergejsergej
9,93042357
9,93042357
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
It's possible with the git diff -G
flag and making inverting the regexp to match lines that the first character that is not space is neither a *
nor space.
-G '^[[:space:]]*[^[:space:]*]'
Not very efficient because will backtrack but seems negative lookahead '^(?!s**)'
, possessive quantifier '^s*+[^*]'
or atomic groups '^(?>s*)[^*]'
are not supported.
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450186%2fgit-diff-show-only-changes-not-matching-a-pattern%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It's possible with the git diff -G
flag and making inverting the regexp to match lines that the first character that is not space is neither a *
nor space.
-G '^[[:space:]]*[^[:space:]*]'
Not very efficient because will backtrack but seems negative lookahead '^(?!s**)'
, possessive quantifier '^s*+[^*]'
or atomic groups '^(?>s*)[^*]'
are not supported.
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
add a comment |
It's possible with the git diff -G
flag and making inverting the regexp to match lines that the first character that is not space is neither a *
nor space.
-G '^[[:space:]]*[^[:space:]*]'
Not very efficient because will backtrack but seems negative lookahead '^(?!s**)'
, possessive quantifier '^s*+[^*]'
or atomic groups '^(?>s*)[^*]'
are not supported.
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
add a comment |
It's possible with the git diff -G
flag and making inverting the regexp to match lines that the first character that is not space is neither a *
nor space.
-G '^[[:space:]]*[^[:space:]*]'
Not very efficient because will backtrack but seems negative lookahead '^(?!s**)'
, possessive quantifier '^s*+[^*]'
or atomic groups '^(?>s*)[^*]'
are not supported.
It's possible with the git diff -G
flag and making inverting the regexp to match lines that the first character that is not space is neither a *
nor space.
-G '^[[:space:]]*[^[:space:]*]'
Not very efficient because will backtrack but seems negative lookahead '^(?!s**)'
, possessive quantifier '^s*+[^*]'
or atomic groups '^(?>s*)[^*]'
are not supported.
edited Nov 24 '18 at 7:58
CodeWizard
52.6k127095
52.6k127095
answered Nov 23 '18 at 16:57
Nahuel FouilleulNahuel Fouilleul
14.4k11525
14.4k11525
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
add a comment |
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
1
1
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
This may be about the best approach there is, but be aware of its limitations. The grep applies to the difference rather than the line, so unimportant changes adjacent to important changes will not (generally) be filtered out.
– Mark Adelsberger
Nov 23 '18 at 17:06
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
Thanks, that seems to work.
– sergej
Nov 23 '18 at 17:11
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450186%2fgit-diff-show-only-changes-not-matching-a-pattern%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown