How do I stop Git from automatically adding embedded repositories?
We have a large repository that needs to have two repositories nested inside it, like this:
Root
+- .git
+- Child1
+- .git
+- Child2
+- .git
We've recently run into a problem where running git add .
causes Git to add both these repositories as embedded repositories. We don't want this. I want Git to ignore them. Is there a Git config setting I can set to disable this behavior?
We can add the child directory names to the .gitignore file:
Child1
Child2
But that will cause all directories/files named Child1
and Child2
in the whole repository to be ignored. We tried
Child1/**
Child2/**
but Git still embeds the repositories with git add
.
git
add a comment |
We have a large repository that needs to have two repositories nested inside it, like this:
Root
+- .git
+- Child1
+- .git
+- Child2
+- .git
We've recently run into a problem where running git add .
causes Git to add both these repositories as embedded repositories. We don't want this. I want Git to ignore them. Is there a Git config setting I can set to disable this behavior?
We can add the child directory names to the .gitignore file:
Child1
Child2
But that will cause all directories/files named Child1
and Child2
in the whole repository to be ignored. We tried
Child1/**
Child2/**
but Git still embeds the repositories with git add
.
git
There is no.gitconfig
file (well, there is a$HOME/.gitconfig
, unless you are using the fancier$XDG_HOME
thing, but that's in$HOME
or$XDG_HOME
). Did you mean.gitignore
?
– torek
Nov 26 '18 at 22:17
add a comment |
We have a large repository that needs to have two repositories nested inside it, like this:
Root
+- .git
+- Child1
+- .git
+- Child2
+- .git
We've recently run into a problem where running git add .
causes Git to add both these repositories as embedded repositories. We don't want this. I want Git to ignore them. Is there a Git config setting I can set to disable this behavior?
We can add the child directory names to the .gitignore file:
Child1
Child2
But that will cause all directories/files named Child1
and Child2
in the whole repository to be ignored. We tried
Child1/**
Child2/**
but Git still embeds the repositories with git add
.
git
We have a large repository that needs to have two repositories nested inside it, like this:
Root
+- .git
+- Child1
+- .git
+- Child2
+- .git
We've recently run into a problem where running git add .
causes Git to add both these repositories as embedded repositories. We don't want this. I want Git to ignore them. Is there a Git config setting I can set to disable this behavior?
We can add the child directory names to the .gitignore file:
Child1
Child2
But that will cause all directories/files named Child1
and Child2
in the whole repository to be ignored. We tried
Child1/**
Child2/**
but Git still embeds the repositories with git add
.
git
git
edited Nov 27 '18 at 13:33
Aaron Jensen
asked Nov 26 '18 at 21:18
Aaron JensenAaron Jensen
14.5k96075
14.5k96075
There is no.gitconfig
file (well, there is a$HOME/.gitconfig
, unless you are using the fancier$XDG_HOME
thing, but that's in$HOME
or$XDG_HOME
). Did you mean.gitignore
?
– torek
Nov 26 '18 at 22:17
add a comment |
There is no.gitconfig
file (well, there is a$HOME/.gitconfig
, unless you are using the fancier$XDG_HOME
thing, but that's in$HOME
or$XDG_HOME
). Did you mean.gitignore
?
– torek
Nov 26 '18 at 22:17
There is no
.gitconfig
file (well, there is a $HOME/.gitconfig
, unless you are using the fancier $XDG_HOME
thing, but that's in $HOME
or $XDG_HOME
). Did you mean .gitignore
?– torek
Nov 26 '18 at 22:17
There is no
.gitconfig
file (well, there is a $HOME/.gitconfig
, unless you are using the fancier $XDG_HOME
thing, but that's in $HOME
or $XDG_HOME
). Did you mean .gitignore
?– torek
Nov 26 '18 at 22:17
add a comment |
1 Answer
1
active
oldest
votes
From the gitignore
man pages:
· A leading slash matches the beginning of the pathname. For example,
"/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
So, change your .gitignore file to contain /Child1
and /Child2
, and you should have what you asked for.
However, another solution might be to actually make the two child repositories into real git submodules. That will have the added bonus of automatically getting those submodules into each synced "main" repo, and stricter version control (each commit in the main repo will have a well-specified submodule state). Depending on your exact situation, this may or may not be a good/convenient idea.
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%2f53489225%2fhow-do-i-stop-git-from-automatically-adding-embedded-repositories%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
From the gitignore
man pages:
· A leading slash matches the beginning of the pathname. For example,
"/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
So, change your .gitignore file to contain /Child1
and /Child2
, and you should have what you asked for.
However, another solution might be to actually make the two child repositories into real git submodules. That will have the added bonus of automatically getting those submodules into each synced "main" repo, and stricter version control (each commit in the main repo will have a well-specified submodule state). Depending on your exact situation, this may or may not be a good/convenient idea.
add a comment |
From the gitignore
man pages:
· A leading slash matches the beginning of the pathname. For example,
"/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
So, change your .gitignore file to contain /Child1
and /Child2
, and you should have what you asked for.
However, another solution might be to actually make the two child repositories into real git submodules. That will have the added bonus of automatically getting those submodules into each synced "main" repo, and stricter version control (each commit in the main repo will have a well-specified submodule state). Depending on your exact situation, this may or may not be a good/convenient idea.
add a comment |
From the gitignore
man pages:
· A leading slash matches the beginning of the pathname. For example,
"/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
So, change your .gitignore file to contain /Child1
and /Child2
, and you should have what you asked for.
However, another solution might be to actually make the two child repositories into real git submodules. That will have the added bonus of automatically getting those submodules into each synced "main" repo, and stricter version control (each commit in the main repo will have a well-specified submodule state). Depending on your exact situation, this may or may not be a good/convenient idea.
From the gitignore
man pages:
· A leading slash matches the beginning of the pathname. For example,
"/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
So, change your .gitignore file to contain /Child1
and /Child2
, and you should have what you asked for.
However, another solution might be to actually make the two child repositories into real git submodules. That will have the added bonus of automatically getting those submodules into each synced "main" repo, and stricter version control (each commit in the main repo will have a well-specified submodule state). Depending on your exact situation, this may or may not be a good/convenient idea.
answered Nov 26 '18 at 21:41
Snild DolkowSnild Dolkow
3,9303923
3,9303923
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.
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%2f53489225%2fhow-do-i-stop-git-from-automatically-adding-embedded-repositories%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
There is no
.gitconfig
file (well, there is a$HOME/.gitconfig
, unless you are using the fancier$XDG_HOME
thing, but that's in$HOME
or$XDG_HOME
). Did you mean.gitignore
?– torek
Nov 26 '18 at 22:17