All of lore.kernel.org
 help / color / mirror / Atom feed
* Ignored files being silently overwritten when switching branches
@ 2018-10-15 13:01 Per Lundberg
  2018-10-16  6:40 ` Jeff King
  0 siblings, 1 reply; 86+ messages in thread
From: Per Lundberg @ 2018-10-15 13:01 UTC (permalink / raw)
  To: git@vger.kernel.org

Hi,

Sorry if this question has been asked before; I skimmed through the list 
archives and the FAQ but couldn't immediately find it - please point me 
in the right direction if it has indeed been discussed before.

We were renaming some previously-included configuration files (foo.conf) 
in one of our repos, instead providing a "default" configuration 
(foo.conf.default) that can easily be copied over to foo.conf by 
individual developers. This all works fine, and the *.conf are now added 
to the .gitignore list.

_However_, when switching back to our previous release branches (which 
includes the foo.conf file in the tree), we have noticed that git 
silently overwrites the locally-modified foo.conf file with the upstream 
foo.conf file from that branch. When switching back to master, the file 
contents is therefore perpetually lost, which is a bit unfortunate.

I did a quick repro case here: https://github.com/perlun/git-test, and 
it seems easy to reproduce this behavior using the following steps (also 
documented in that git repo):

$ git init
$ touch foo.txt
$ nano foo.txt
$ git add foo.txt
$ git commit -m 'Add foo.txt'
[master (root-commit) 8ef05cb] Add foo.txt
  1 file changed, 1 insertion(+)
  create mode 100644 foo.txt
$ git checkout -b dev
Switched to a new branch 'dev'
$ git mv foo.txt foo.bar
$ git commit -m "Rename foo.txt -> foo.bar"
[dev 4c55c9b] Rename foo.txt -> foo.bar
  1 file changed, 0 insertions(+), 0 deletions(-)
  rename foo.txt => foo.bar (100%)
$ echo 'my local foo.txt' > foo.txt
$ echo foo.txt > .gitignore
$ git commit -m "Add .gitignore"
[dev 4c16acb] Add .gitignore
  1 file changed, 2 insertions(+)
  create mode 100644 .gitignore
$ git checkout master # This will silently overwrite the local foo.txt

So my question is: is this by design or should this be considered a bug 
in git? Of course, it depends largely on what .gitignore is being used 
for - if we are talking about files which can easily be regenerated 
(build artifacts, node_modules folders etc.) I can totally understand 
the current behavior, but when dealing with more sensitive & important 
content it's a bit inconvenient.


What I would have expected would be for git to complain, with this message:

error: The following untracked working tree files would be overwritten 
by checkout:
	foo.txt
Please move or remove them before you switch branches.
Aborting

This is normally the message you get when a _non-ignored_ file is being 
overwritten. But apparently not so when an ignored file is being 
overwritten. If this can be tweaked in the local repo settings somehow, 
please let me know.
--
Best regards,
Per

^ permalink raw reply	[flat|nested] 86+ messages in thread

end of thread, other threads:[~2018-12-06 18:40 UTC | newest]

Thread overview: 86+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-15 13:01 Ignored files being silently overwritten when switching branches Per Lundberg
2018-10-16  6:40 ` Jeff King
2018-10-16  9:10   ` Ævar Arnfjörð Bjarmason
2010-08-17  5:21     ` git merge, .gitignore, and silently overwriting untracked files Joshua Jensen
2010-08-17 19:33       ` Junio C Hamano
2010-08-18 23:39         ` [PATCH] optionally disable overwriting of ignored files Clemens Buchacher
2010-08-19 10:41           ` Jakub Narebski
2010-08-20 18:48             ` Clemens Buchacher
2010-08-20 19:01               ` Joshua Jensen
2010-08-20 20:35           ` Junio C Hamano
2010-08-21  8:05             ` Clemens Buchacher
2010-08-22  7:25               ` Junio C Hamano
2010-08-22  8:20                 ` Clemens Buchacher
2010-10-09 22:39               ` Kevin Ballard
2010-08-21 13:23             ` Clemens Buchacher
2010-10-09 13:52             ` [PATCH 0/5] do not overwrite untracked files in leading path Clemens Buchacher
2010-10-09 13:52             ` [PATCH 1/5] t7607: use test_commit and test_must_fail Clemens Buchacher
2010-10-10  6:35               ` Jonathan Nieder
2010-10-10  8:35                 ` [PATCH 1/5 v2] t7607: use test-lib functions and check MERGE_HEAD Clemens Buchacher
2010-10-13 21:33                   ` Junio C Hamano
2010-10-13 21:59                   ` Junio C Hamano
2010-10-09 13:52             ` [PATCH 2/5] t7607: add leading-path tests Clemens Buchacher
2010-10-09 19:14               ` Johannes Sixt
2010-10-10  8:38                 ` [PATCH 2/5 v2] " Clemens Buchacher
2010-10-09 13:52             ` [PATCH 3/5] add function check_ok_to_remove() Clemens Buchacher
2010-10-13 21:43               ` Junio C Hamano
2010-10-09 13:52             ` [PATCH 4/5] lstat_cache: optionally return match_len Clemens Buchacher
2010-10-09 13:53             ` [PATCH 5/5] do not overwrite files in leading path Clemens Buchacher
2010-10-13 21:57               ` Junio C Hamano
2010-10-13 22:34                 ` Clemens Buchacher
2010-10-15  6:48                   ` Clemens Buchacher
2010-10-15 18:47                     ` Junio C Hamano
2010-08-20 20:46           ` [PATCH] optionally disable overwriting of ignored files Junio C Hamano
2010-08-21  6:48             ` [PATCH v2] " Clemens Buchacher
2010-08-23  8:33           ` [PATCH] " Matthieu Moy
2010-08-31 18:44             ` Heiko Voigt
2010-08-23  9:37           ` Matthieu Moy
2010-08-23 13:56             ` Holger Hellmuth
2010-08-23 15:11               ` Clemens Buchacher
2010-08-23 15:57                 ` Junio C Hamano
2010-08-24  7:28                   ` Clemens Buchacher
2010-08-24 16:19                     ` Junio C Hamano
2018-11-06 12:41       ` Checkout deleted semi-untracked file Steffen Jost
2018-11-06 15:12         ` Ævar Arnfjörð Bjarmason
2018-11-11  9:52           ` [RFC PATCH] Introduce "precious" file concept Nguyễn Thái Ngọc Duy
2018-11-11 12:15             ` Bert Wesarg
2018-11-11 12:33             ` Ævar Arnfjörð Bjarmason
2018-11-11 13:06               ` Ævar Arnfjörð Bjarmason
2018-11-12 16:14                 ` Duy Nguyen
2018-11-11 15:41               ` Duy Nguyen
2018-11-11 16:55                 ` Ævar Arnfjörð Bjarmason
2018-11-12  7:35                 ` Per Lundberg
2018-11-12  9:08                   ` Matthieu Moy
2018-11-12  9:49                     ` Ævar Arnfjörð Bjarmason
2018-11-12 10:26                       ` Junio C Hamano
2018-11-12 12:45                         ` Ævar Arnfjörð Bjarmason
2018-11-12 13:02                           ` Junio C Hamano
2018-11-12 16:07                     ` Duy Nguyen
2018-11-12 23:22               ` brian m. carlson
2018-11-26  9:30                 ` Per Lundberg
2018-11-26 10:28                   ` Ævar Arnfjörð Bjarmason
2018-11-26 12:49                   ` Junio C Hamano
2018-11-27 15:08                     ` Ævar Arnfjörð Bjarmason
2018-11-28  3:58                       ` Junio C Hamano
2018-11-28 21:54                         ` Ævar Arnfjörð Bjarmason
2018-11-29  5:04                           ` Junio C Hamano
2018-12-01  6:21                           ` Duy Nguyen
2018-11-26 15:26                   ` Duy Nguyen
2018-11-26 15:34                     ` Ævar Arnfjörð Bjarmason
2018-11-26 15:40                       ` Duy Nguyen
2018-11-26 15:47                         ` Ævar Arnfjörð Bjarmason
2018-11-26 15:55                           ` Duy Nguyen
2018-11-27  9:43                             ` Per Lundberg
2018-11-27 12:55                               ` Jacob Keller
2018-11-27 14:50                                 ` Per Lundberg
2018-11-28  1:21                                   ` brian m. carlson
2018-11-28  6:54                                     ` Per Lundberg
2018-11-27 15:19                                 ` Duy Nguyen
2018-12-06 18:39                                 ` Duy Nguyen
2018-11-26 16:02                 ` Eckhard Maaß
2018-11-11 12:59             ` Junio C Hamano
2018-11-26 19:38             ` [PATCH v2 0/2] Precios files round two Nguyễn Thái Ngọc Duy
2018-11-26 19:38               ` [PATCH v2 1/2] Introduce "precious" file concept Nguyễn Thái Ngọc Duy
2018-11-26 19:38               ` [PATCH v2 2/2] unpack-trees: support core.allIgnoredFilesArePreciousWhenMerging Nguyễn Thái Ngọc Duy
2018-10-16 15:05     ` Ignored files being silently overwritten when switching branches Duy Nguyen
2018-10-18  1:55       ` Junio C Hamano

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.