git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [BUG] "git checkout BRANCH -- FILE" deletes staged commits

From
Brandon McCaig <bamccaig@gmail.com>
Date
Nov 26, 2019, 22:07 UTC
Message-ID
<20191126220705.5kfrqdtzbfsgu2k3@test-chamber-21.localdomain>
In-Reply-To
<aaa2b05a-4c0c-8194-6488-f1b770f3b852@gmail.com>
Tasnad:
On Mon, Nov 25, 2019 at 09:15:18PM +0100, Tasnad Kernetzky wrote:
> Hi Brandon,
Hello,
Show 13 quoted lines
> On 22.11.19 04:14, Brandon McCaig wrote: [...]
> > When you switch back to branch B the state of the tst file is
> > the same as it exists in the branch B. There is no conflict
> > here so it succeeds, and once it does you no longer have any
> > changes made to tst because the version in your index and
> > working tree matches the version in the HEAD commit.
> >
> > git status at this point would report nothing (assuming no
> > other files are modified).
> 
> This is the point I actually considered as a bug. There are
> staged changes and usually git doesn't let me switch away from
> a branch in such cases.

I think that Git normally will let you change branches even if you have changes in your index or working tree as long as the version of the file in your destination branch matches the HEAD version. In other words no merge is necessary and no changes can be lost. I regularly do this when I start making changes on develop or master, and then decide to branch after the fact. It's a bit less typing than stashing in between. :)

For example:
	git init checkout
	cd checkout
	echo master >log
	git add log
	git commit -m master
	git checkout -b B
	echo B >>log
	git add log
	git checkout master
	git status
Regards,
-- 
Brandon McCaig <bamccaig@gmail.com> <bambams@castopulence.org>
Castopulence Software <https://www.castopulence.org/>
Blog <http://www.bambams.ca/>
perl -E '$_=q{V zrna gur orfg jvgu jung V fnl. }.
q{Vg qbrfa'\''g nyjnlf fbhaq gung jnl.};
tr/A-Ma-mN-Zn-z/N-Zn-zA-Ma-m/;say'
Previous: Tasnad Kernetzky
Message 2 of 2 in “Fwd: [BUG] "git checkout BRANCH -- FILE" deletes staged commits”
  1. Tasnad KernetzkyNov 25, 2019
  2. Brandon McCaigNov 26, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.