Git alias ignoring global settings
I have the relativePaths
setting for git status
set in ~/.gitconfig
:
[status]
relativePaths = true
Then a git
alias defined like this:
st = !git status
When I call git status
, the relativePaths
setting applies, but when I call the alias, it doesn't.
How can I get this to work?
NOTE:
In my alias, I actually pipe the result of git status
to grep
, so I need to use the !
shell syntax. I excluded that from this example because the behavior is the same without it
git
add a comment |
I have the relativePaths
setting for git status
set in ~/.gitconfig
:
[status]
relativePaths = true
Then a git
alias defined like this:
st = !git status
When I call git status
, the relativePaths
setting applies, but when I call the alias, it doesn't.
How can I get this to work?
NOTE:
In my alias, I actually pipe the result of git status
to grep
, so I need to use the !
shell syntax. I excluded that from this example because the behavior is the same without it
git
It just occured to me that thebash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out
– slezica
Nov 23 '18 at 14:53
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
You know what I meant
– slezica
Nov 23 '18 at 16:05
add a comment |
I have the relativePaths
setting for git status
set in ~/.gitconfig
:
[status]
relativePaths = true
Then a git
alias defined like this:
st = !git status
When I call git status
, the relativePaths
setting applies, but when I call the alias, it doesn't.
How can I get this to work?
NOTE:
In my alias, I actually pipe the result of git status
to grep
, so I need to use the !
shell syntax. I excluded that from this example because the behavior is the same without it
git
I have the relativePaths
setting for git status
set in ~/.gitconfig
:
[status]
relativePaths = true
Then a git
alias defined like this:
st = !git status
When I call git status
, the relativePaths
setting applies, but when I call the alias, it doesn't.
How can I get this to work?
NOTE:
In my alias, I actually pipe the result of git status
to grep
, so I need to use the !
shell syntax. I excluded that from this example because the behavior is the same without it
git
git
asked Nov 23 '18 at 14:49
slezica
42.9k1674133
42.9k1674133
It just occured to me that thebash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out
– slezica
Nov 23 '18 at 14:53
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
You know what I meant
– slezica
Nov 23 '18 at 16:05
add a comment |
It just occured to me that thebash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out
– slezica
Nov 23 '18 at 14:53
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
You know what I meant
– slezica
Nov 23 '18 at 16:05
It just occured to me that the
bash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out– slezica
Nov 23 '18 at 14:53
It just occured to me that the
bash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out– slezica
Nov 23 '18 at 14:53
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
You know what I meant
– slezica
Nov 23 '18 at 16:05
You know what I meant
– slezica
Nov 23 '18 at 16:05
add a comment |
1 Answer
1
active
oldest
votes
The setting is probably applied, which you could check with an alias, e.g.:
[alias]
check-status-rel = config --global --get status.relativePaths
The reason why it doesn't work for you is explained in man git-config
, in the second paragraph of the alias.*
settings' description:
alias.*
Command aliases for the git(1) command wrapper - e.g. after
defining "alias.last = cat-file commit HEAD", the invocation "git
last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that hide
existing Git commands are ignored. Arguments are split by spaces,
the usual shell quoting and escaping is supported. A quote pair or
a backslash can be used to quote them.
If the alias expansion is prefixed with an exclamation point, it
will be treated as a shell command. For example, defining
"alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
is equivalent to running the shell command "gitk --all --not
ORIG_HEAD". Note that shell commands will be executed from the
top-level directory of a repository, which may not necessarily be
the current directory. GIT_PREFIX is set as returned by running
git rev-parse --show-prefix from the original current directory.
See git-rev-parse(1).
In short, Git aliases that are shell commands are always executed at the root directory of the repository.
Edit: Obviously, you can simply cd
into the directory before running the commands:
[alias]
st = "!cd "$GIT_PREFIX" && git status"
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%2f53448800%2fgit-alias-ignoring-global-settings%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
The setting is probably applied, which you could check with an alias, e.g.:
[alias]
check-status-rel = config --global --get status.relativePaths
The reason why it doesn't work for you is explained in man git-config
, in the second paragraph of the alias.*
settings' description:
alias.*
Command aliases for the git(1) command wrapper - e.g. after
defining "alias.last = cat-file commit HEAD", the invocation "git
last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that hide
existing Git commands are ignored. Arguments are split by spaces,
the usual shell quoting and escaping is supported. A quote pair or
a backslash can be used to quote them.
If the alias expansion is prefixed with an exclamation point, it
will be treated as a shell command. For example, defining
"alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
is equivalent to running the shell command "gitk --all --not
ORIG_HEAD". Note that shell commands will be executed from the
top-level directory of a repository, which may not necessarily be
the current directory. GIT_PREFIX is set as returned by running
git rev-parse --show-prefix from the original current directory.
See git-rev-parse(1).
In short, Git aliases that are shell commands are always executed at the root directory of the repository.
Edit: Obviously, you can simply cd
into the directory before running the commands:
[alias]
st = "!cd "$GIT_PREFIX" && git status"
add a comment |
The setting is probably applied, which you could check with an alias, e.g.:
[alias]
check-status-rel = config --global --get status.relativePaths
The reason why it doesn't work for you is explained in man git-config
, in the second paragraph of the alias.*
settings' description:
alias.*
Command aliases for the git(1) command wrapper - e.g. after
defining "alias.last = cat-file commit HEAD", the invocation "git
last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that hide
existing Git commands are ignored. Arguments are split by spaces,
the usual shell quoting and escaping is supported. A quote pair or
a backslash can be used to quote them.
If the alias expansion is prefixed with an exclamation point, it
will be treated as a shell command. For example, defining
"alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
is equivalent to running the shell command "gitk --all --not
ORIG_HEAD". Note that shell commands will be executed from the
top-level directory of a repository, which may not necessarily be
the current directory. GIT_PREFIX is set as returned by running
git rev-parse --show-prefix from the original current directory.
See git-rev-parse(1).
In short, Git aliases that are shell commands are always executed at the root directory of the repository.
Edit: Obviously, you can simply cd
into the directory before running the commands:
[alias]
st = "!cd "$GIT_PREFIX" && git status"
add a comment |
The setting is probably applied, which you could check with an alias, e.g.:
[alias]
check-status-rel = config --global --get status.relativePaths
The reason why it doesn't work for you is explained in man git-config
, in the second paragraph of the alias.*
settings' description:
alias.*
Command aliases for the git(1) command wrapper - e.g. after
defining "alias.last = cat-file commit HEAD", the invocation "git
last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that hide
existing Git commands are ignored. Arguments are split by spaces,
the usual shell quoting and escaping is supported. A quote pair or
a backslash can be used to quote them.
If the alias expansion is prefixed with an exclamation point, it
will be treated as a shell command. For example, defining
"alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
is equivalent to running the shell command "gitk --all --not
ORIG_HEAD". Note that shell commands will be executed from the
top-level directory of a repository, which may not necessarily be
the current directory. GIT_PREFIX is set as returned by running
git rev-parse --show-prefix from the original current directory.
See git-rev-parse(1).
In short, Git aliases that are shell commands are always executed at the root directory of the repository.
Edit: Obviously, you can simply cd
into the directory before running the commands:
[alias]
st = "!cd "$GIT_PREFIX" && git status"
The setting is probably applied, which you could check with an alias, e.g.:
[alias]
check-status-rel = config --global --get status.relativePaths
The reason why it doesn't work for you is explained in man git-config
, in the second paragraph of the alias.*
settings' description:
alias.*
Command aliases for the git(1) command wrapper - e.g. after
defining "alias.last = cat-file commit HEAD", the invocation "git
last" is equivalent to "git cat-file commit HEAD". To avoid
confusion and troubles with script usage, aliases that hide
existing Git commands are ignored. Arguments are split by spaces,
the usual shell quoting and escaping is supported. A quote pair or
a backslash can be used to quote them.
If the alias expansion is prefixed with an exclamation point, it
will be treated as a shell command. For example, defining
"alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new"
is equivalent to running the shell command "gitk --all --not
ORIG_HEAD". Note that shell commands will be executed from the
top-level directory of a repository, which may not necessarily be
the current directory. GIT_PREFIX is set as returned by running
git rev-parse --show-prefix from the original current directory.
See git-rev-parse(1).
In short, Git aliases that are shell commands are always executed at the root directory of the repository.
Edit: Obviously, you can simply cd
into the directory before running the commands:
[alias]
st = "!cd "$GIT_PREFIX" && git status"
edited Nov 24 '18 at 9:19
answered Nov 23 '18 at 15:14
alfunx
854313
854313
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53448800%2fgit-alias-ignoring-global-settings%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
It just occured to me that the
bash
invoked from the alias may not be reading my gitconfig, or may be missing env vars. Will check that out– slezica
Nov 23 '18 at 14:53
Bash is not responsible for reading the gitconfig files.
– alfunx
Nov 23 '18 at 15:30
You know what I meant
– slezica
Nov 23 '18 at 16:05