From: Yubin Ruan <ablacktshirt@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC] Add warning when git discard changes on another branch?
Date: Mon, 8 May 2017 19:18:39 +0800 [thread overview]
Message-ID: <20170508111836.GB3014@HP> (raw)
In-Reply-To: <xmqqzieo9hfo.fsf@gitster.mtv.corp.google.com>
On Mon, May 08, 2017 at 12:05:31PM +0900, Junio C Hamano wrote:
> Yubin Ruan <ablacktshirt@gmail.com> writes:
>
> > I think it would be better if git can warn use if we switch to another branch
> > without committing the modification. Git will warn if the modification is based
> > on a commit different from where the checkout happened.
> >
> > For example, say I am now on branch 'master' and all files *clean*. Now if I do:
> > $ git checkout -b issue
> > and make some changes to a file:
> > $ echo "modification on branch issue" >> lala.txt
> > and then switch back to branch 'master':
> > $ git checkout master
> > and git can see the changes:
> > $ git status
> > On branch master
> > 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: lala.txt
> >
> > no changes added to commit (use "git add" and/or "git commit -a")
> >
> > Now, if I do "git checkout -- lala.txt", then I will lose that change on branch
> > 'issue' too!!!
>
> There may be a fundamental misunderstanding here. In Git, changes
> you make in the working tree do *not* belong to any branch. The
> request "git checkout -- lala.txt" you made in this step does *not*
> say "Hey, Git, these changes to lala.txt are not necessary in the
> 'master' branch". It says "I started editing lala.txt, but it turns
> out that I do not need that change at all, anywhere, please remove
> it."
I understand this. I just suggest that git add some warning in case some users
are not aware of this, as it does when , on branch 'issue', changes to 'lala.txt'
are based on a commit different from where the checkout happened, i.e.
on branch 'master'
|
| <-- git checkout -b issue
\
\ <-- modification to git happened on a commit different from where
the checkout happened
in this situation, git would warn us something like this:
error: Your local changes to the following files would be overwritten by checkout:
lala.txt
Please, commit your changes or stash them before you can switch branches.
Aborting
> If you meant the changes while you were on "issues" branch were not
> yet ready to be committed, but now you want to work on "master"
> branch without having to worry about these changes, "git stash" may
> be a useful tool. Alternatively, you can just create a temporary
> commit while on "issues" branch before checking out "master" branch
> to work on something else, and when you are ready to continue
> working on the "issues" branch, check out "issues" branch and either
> (1) start with "reset HEAD^" or (2) just continue working on it and
> conclude with "commit --amend".
Nice suggestion though.
---
Yubin
next prev parent reply other threads:[~2017-05-08 3:18 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-07 23:35 [RFC] Add warning when git discard changes on another branch? Yubin Ruan
2017-05-08 3:05 ` Junio C Hamano
2017-05-08 11:18 ` Yubin Ruan [this message]
2017-05-08 3:41 ` Junio C Hamano
2017-05-08 4:19 ` Junio C Hamano
2017-05-08 12:27 ` Yubin Ruan
2017-05-08 6:07 ` Junio C Hamano
2017-05-08 14:10 ` Yubin Ruan
2017-05-08 12:01 ` Yubin Ruan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170508111836.GB3014@HP \
--to=ablacktshirt@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.