Hi All,
I have couple of interconnected questions:
1. Is there a way I can make Git not track a particular folder in my
working code base directory. For example, I have a tmp folder in my
local code base and I don't want Git to track whats going on inside
that directory.
2. Accidently I have added this folder, committed and pushed it to
origin master. Is there a way I can remove this tmp folder from git
revision history and at the same time keeping it intact in my local
code base directory.
Cheers,
Parag
Hi Parag,
Parag Kalra writes:
1. Is there a way I can make Git not track a particular folder in my
working code base directory. For example, I have a tmp folder in my
local code base and I don't want Git to track whats going on inside
that directory.
Yes. See gitignore (5).
2. Accidently I have added this folder, committed and pushed it to
origin master. Is there a way I can remove this tmp folder from git
revision history and at the same time keeping it intact in my local
code base directory.
Yes. Simply `rm --cached` the folder, and amemd your previous commit
using `commit --amend`, and perform a non-ff push using the `+`
syntax. For example, to perform a non-ff push to remote branch `foo`
whose local name is `foo`, invoke `push +foo:foo`. Note that other
users who have already pulled the bad commit will have to forget about
it explicitly too.
If the folder tracking information is a few revision deep, consider
using `rebase -i` to manually overwrite those commits to exclude that
folder. If the folder was too many revisions earlier, use a
`filter-branch` index filter to make Git completely forget that
folder.
-- Ram
Thanks Ram.
git rm --cached was precisely what I was looking for.
Also .gitignore file worked without any issues.
Cheers,
Parag
On Sun, Sep 12, 2010 at 3:37 AM, Ramkumar Ramachandra
[off-list ref] wrote:
Hi Parag,
Parag Kalra writes:
quoted
1. Is there a way I can make Git not track a particular folder in my
working code base directory. For example, I have a tmp folder in my
local code base and I don't want Git to track whats going on inside
that directory.
Yes. See gitignore (5).
quoted
2. Accidently I have added this folder, committed and pushed it to
origin master. Is there a way I can remove this tmp folder from git
revision history and at the same time keeping it intact in my local
code base directory.
Yes. Simply `rm --cached` the folder, and amemd your previous commit
using `commit --amend`, and perform a non-ff push using the `+`
syntax. For example, to perform a non-ff push to remote branch `foo`
whose local name is `foo`, invoke `push +foo:foo`. Note that other
users who have already pulled the bad commit will have to forget about
it explicitly too.
If the folder tracking information is a few revision deep, consider
using `rebase -i` to manually overwrite those commits to exclude that
folder. If the folder was too many revisions earlier, use a
`filter-branch` index filter to make Git completely forget that
folder.
-- Ram