threads / discuss / 33865

.gitignore behavior on Mac

Subject: .gitignore behavior on Mac

## tl;dr

8 messages between May 18, 2013 and May 19, 2013.

replies: 7people: 5as markdown or json

Peter Lauri· May 18, 2013, 18:36 UTC · lore

Shouldn't this be valid? I would expect to NOT see the core/inc/config.inc.php in the "git status" output...

Peters-MacBook-Air:dt-git plauri$ cat .gitignore .buildpath .project .settings/ web/pjotr.php core/inc/config.inc.php dt_error.log process_wrapper.sh

Peters-MacBook-Air:dt-git plauri$ git status # On branch local/DT-7_gantt # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # modified: core/inc/config.inc.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # out.ionel # tree.py no changes added to commit (use "git add" and/or "git commit -a") Peters-MacBook-Air:dt-git plauri$

John Keeping· May 18, 2013, 18:41 UTC · re: Peter Lauri · lore

Re: .gitignore behavior on Mac

On Sat, May 18, 2013 at 08:36:42PM +0200, Peter Lauri wrote:
Show 20 quoted lines
> Shouldn't this be valid? I would expect to NOT see the
> core/inc/config.inc.php in the "git status" output...
> 
> Peters-MacBook-Air:dt-git plauri$ cat .gitignore
> .buildpath
> .project
> .settings/
> web/pjotr.php
> core/inc/config.inc.php
> dt_error.log
> process_wrapper.sh
> 
> Peters-MacBook-Air:dt-git plauri$ git status
> # On branch local/DT-7_gantt
> # Changes not staged for commit:
> #   (use "git add <file>..." to update what will be committed)
> #   (use "git checkout -- <file>..." to discard changes in working directory)
> #
> # modified:   .gitignore
> # modified:   core/inc/config.inc.php

core/inc/config.inc.php is already in the repository. Git won't ignore files that are already tracked.

If you remove the file from the index:
    git rm --cached core/inc/config.inc.php

then you'll see it as deleted in "git status" but it won't appear in the untracked files section even though it's still there in the working tree.

Show 11 quoted lines
> # Untracked files:
> #   (use "git add <file>..." to include in what will be committed)
> #
> # out.ionel
> # tree.py
> no changes added to commit (use "git add" and/or "git commit -a")
> Peters-MacBook-Air:dt-git plauri$
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peter Lauri· May 18, 2013, 18:43 UTC · re: John Keeping · lore

Re: .gitignore behavior on Mac

But I just don't want to see that darn file. It is a config file that I have changed, and I don't want to need to stash it for each "git svn" action I want to perform... Any solution for that?

On Sat, May 18, 2013 at 8:41 PM, John Keeping <john@keeping.me.uk> wrote:
Show 44 quoted lines
> On Sat, May 18, 2013 at 08:36:42PM +0200, Peter Lauri wrote:
>> Shouldn't this be valid? I would expect to NOT see the
>> core/inc/config.inc.php in the "git status" output...
>>
>> Peters-MacBook-Air:dt-git plauri$ cat .gitignore
>> .buildpath
>> .project
>> .settings/
>> web/pjotr.php
>> core/inc/config.inc.php
>> dt_error.log
>> process_wrapper.sh
>>
>> Peters-MacBook-Air:dt-git plauri$ git status
>> # On branch local/DT-7_gantt
>> # Changes not staged for commit:
>> #   (use "git add <file>..." to update what will be committed)
>> #   (use "git checkout -- <file>..." to discard changes in working directory)
>> #
>> # modified:   .gitignore
>> # modified:   core/inc/config.inc.php
>
> core/inc/config.inc.php is already in the repository.  Git won't ignore
> files that are already tracked.
>
> If you remove the file from the index:
>
>     git rm --cached core/inc/config.inc.php
>
> then you'll see it as deleted in "git status" but it won't appear in the
> untracked files section even though it's still there in the working
> tree.
>
>> # Untracked files:
>> #   (use "git add <file>..." to include in what will be committed)
>> #
>> # out.ionel
>> # tree.py
>> no changes added to commit (use "git add" and/or "git commit -a")
>> Peters-MacBook-Air:dt-git plauri$
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
John Keeping· May 18, 2013, 18:55 UTC · re: Peter Lauri · lore

Re: .gitignore behavior on Mac

On Sat, May 18, 2013 at 08:43:57PM +0200, Peter Lauri wrote:
> But I just don't want to see that darn file. It is a config file that
> I have changed, and I don't want to need to stash it for each "git
> svn" action I want to perform... Any solution for that?
Read about --assume-unchanged in git-update-index(1).
Johannes Sixt· May 18, 2013, 21:01 UTC · re: John Keeping · lore

Re: .gitignore behavior on Mac

Am 18.05.2013 20:55, schrieb John Keeping:
Show 6 quoted lines
> On Sat, May 18, 2013 at 08:43:57PM +0200, Peter Lauri wrote:
>> But I just don't want to see that darn file. It is a config file that
>> I have changed, and I don't want to need to stash it for each "git
>> svn" action I want to perform... Any solution for that?
> 
> Read about --assume-unchanged in git-update-index(1).

Beware!! --assume-unchanged is a promise not to modify a file, but that is not true in this case, because it *was* modified. It might hide the file from the git-status output, but then git might do something unexpected sometimes, because a promise was not kept.

See last paragraph of http://article.gmane.org/gmane.comp.version-control.git/146353

-- Hannes
Peter Lauri· May 18, 2013, 22:37 UTC · re: Johannes Sixt · lore

Re: .gitignore behavior on Mac

Great, I have gotten the concept now :)

My workaround for my problem is to rename the file to ....default and then all will work out well :) Copy the file then and locally modify it, but it will be in .gitignore so not tracked :)

On Sat, May 18, 2013 at 11:01 PM, Johannes Sixt <j6t@kdbg.org> wrote:
Show 18 quoted lines
> Am 18.05.2013 20:55, schrieb John Keeping:
>> On Sat, May 18, 2013 at 08:43:57PM +0200, Peter Lauri wrote:
>>> But I just don't want to see that darn file. It is a config file that
>>> I have changed, and I don't want to need to stash it for each "git
>>> svn" action I want to perform... Any solution for that?
>>
>> Read about --assume-unchanged in git-update-index(1).
>
> Beware!! --assume-unchanged is a promise not to modify a file, but that
> is not true in this case, because it *was* modified. It might hide the
> file from the git-status output, but then git might do something
> unexpected sometimes, because a promise was not kept.
>
> See last paragraph of
> http://article.gmane.org/gmane.comp.version-control.git/146353
>
> -- Hannes
>
Junio C Hamano· May 19, 2013, 07:47 UTC · re: Peter Lauri · lore

Re: .gitignore behavior on Mac

Peter Lauri <peterlauri@gmail.com> writes:
Show 5 quoted lines
> Great, I have gotten the concept now :)
>
> My workaround for my problem is to rename the file to ....default and
> then all will work out well :) Copy the file then and locally modify
> it, but it will be in .gitignore so not tracked :)

I think it is not even an workaround but is a solid software configuration practice that is recommended.

Antony Male· May 19, 2013, 10:54 UTC · re: Peter Lauri · lore

Re: .gitignore behavior on Mac

On 18/05/2013 23:37, Peter Lauri wrote:
Show 5 quoted lines
> Great, I have gotten the concept now :)
>
> My workaround for my problem is to rename the file to ....default and
> then all will work out well :) Copy the file then and locally modify
> it, but it will be in .gitignore so not tracked :)

Over in the #git IRC channel, we point users asking this question to https://gist.github.com/canton7/1423106. It contains that approach, and quite a few others.

Antony

← back to recent threads