all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
To: Alan Mackenzie <acm@muc.de>
Cc: "Óscar Fuentes" <ofv@wanadoo.es>, emacs-devel@gnu.org
Subject: Re: Git question: when using branches, how does git treat working files when changing branches?
Date: Thu, 29 Oct 2015 09:21:02 +0100	[thread overview]
Message-ID: <87ziz213wx.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <20151028235340.GE2538@acm.fritz.box> (Alan Mackenzie's message of "Wed, 28 Oct 2015 23:53:40 +0000")

Alan Mackenzie <acm@muc.de> writes:

> Hello, Óscar.
>
> On Wed, Oct 28, 2015 at 11:59:03PM +0100, Óscar Fuentes wrote:
>> Alan Mackenzie <acm@muc.de> writes:
>
>> Joining the emacs-devel git hot line...
>
>> >> By default git will complain if changing branches would revert
>> >> uncommitted changes.
>
>> > OK, I started with a test repository, with some changes in (which I saved
>> > in a diff file).  After listing the available branches, and chosing one
>> > at random, I did
>> >     $ git checkout /origin/master
>> > , and got some message or other about a detached head.  Without doing
>> > anything else I then switched back with
>> >     $ git checkout master.
>
>> > git status now reports that the working directory is "clean".  So one of
>> > these two operations has discarded my changes.
>
>> This is hard to believe, so I tried your steps:
>
>> oscar@qcore:~/dev/emacs/emacs$ git checkout /origin/master
>> fatal: Could not switch to '/origin/': No such file or directory
>
>> As you can see, your first command fails to complete. I requested this
>> on a previous question of yours about git and I request it again: please
>> post the *exact* commands and its output. Otherwise, claims like what
>> you made above are dubious, at best.
>
> As you probably could guess, "/origin/master" was a typo, and the actual
> text was "origin/master".  It's getting quite late.
>
> Having a look at my series of commands after the first git checkout, I
> in fact did a git stash list.  I don't think that list was empty when I
> typed that command.  It isn't empty now.  In other words, that first git
> checkout stashed my changes, it didn't discard them.  It may have told
> me, it might not have.

It most certainly would not have told you since a checkout does not
magically stash things.  More likely you forget the "list" part and
typed just

git stash

or a variation thereof.

> It wouldn't work well for me.  The word "commit" has a meaning,
> something like "hand over on a permanent basis".  When you make a
> "commitment", you are pledging your honour that you will stand behind
> what you have committed.

Nope, that's what git commit -s is for (Signed-off-by: footer).

> What "commit" _doesn't_ mean is "temporarily store because there's
> nowhere better".

You are working with a distributed version control system.  It means
exactly that since you are working with your _private_ repository.
Anything non-trivial I push has actually seen a number of git commit
--amend and git rebase -i reorganizations so that what I end up pushing
is _polished_.

The most important tool of the mathematician and programmer is the
wastebasket, the most important tool of a distributed version control
system is local commits.

You are not understanding your tool if you insist on using it like CVS,
and you are making life harder for yourself (since you need to get
everything right the first try) and everybody else (since you won't get
everything right the first try).

> Of course there are ways of undoing a commit if it was done by
> mistake.  But routinely to commit to something with the intention of
> repudiating it later is an abuse.  It is the sort of thing politicians
> do.

No.  No, no, no.  Absolutely no.  The commits in a distributed version
control system are yours only.  It isn't an abuse of the creative
process to make your first written pages match the last written pages as
if you exactly knew which words you were going to write.

The sequence of commits is supposed to tell a story, not be a witness to
how you came up with the story.

Nobody wants to buy a book where the author handed in his wastebasket as
part of the manuscript.

> Committed software and work in progress are two different categories
> of code.  To confuse them must lead to trouble.

Commits are work in progress up to the point they are signed off on and
pushed to a central repository or offered to the public in some other
way.  Even then, review processes might very well change the sequence of
commits into something more sensible before they get accepted into
something less ephemeral than a review branch.

> If I were were to commit unfinished changes just for lack of somewhere
> proper to store them, inevitably some of these changes would find
> themselves becoming permanent, embarassingly so.

So read the stuff before pushing it upstream.  That's just common sense.

> Having continually to remember to cancel a commit each time I change
> branches would be an extra level of stress, of which there is already
> enough with git.

Why would you cancel a commit?  That does not make sense.

> git hid my changes, for what reason I don't know.

If your shell has a history command, I'm pretty sure that there will be
an explicit hint about why "git" "hid" your changes.

-- 
David Kastrup



  parent reply	other threads:[~2015-10-29  8:21 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-28 19:20 Git question: when using branches, how does git treat working files when changing branches? Alan Mackenzie
2015-10-28 19:44 ` David Kastrup
2015-10-28 20:00 ` Steinar Bang
2015-10-28 20:04 ` Ricardo Wurmus
2015-10-28 20:10 ` Alex Bennée
2015-10-28 22:32   ` Alan Mackenzie
2015-10-28 22:56     ` Xue Fuqiao
2015-10-28 22:59     ` Óscar Fuentes
2015-10-28 23:53       ` Alan Mackenzie
2015-10-29  0:17         ` Dmitry Gutov
2015-10-29  0:28         ` Michael Heerdegen
2015-10-29  0:49           ` Michael Heerdegen
2015-10-29  2:25         ` Yuri Khan
2015-10-29  8:21         ` David Kastrup [this message]
2015-10-29 12:35           ` Alan Mackenzie
2015-10-29 13:21             ` David Kastrup
2015-10-29 17:02               ` On the popularity of git [Was: Git question: when using branches, how does git treat working files when changing branches?] Alan Mackenzie
2015-10-29 17:22                 ` David Kastrup
2015-10-29 18:08                 ` John Wiegley
2015-10-30  7:48                 ` Paul Eggert
2015-10-30  9:27                   ` Alan Mackenzie
2015-10-30  9:48                     ` David Kastrup
2015-10-30 10:34                     ` Eli Zaretskii
2015-10-30 21:44                     ` Paul Eggert
2015-10-30  9:09                 ` joakim
2015-10-30 10:49                   ` Yuri Khan
2015-10-31  3:16                     ` Stephen J. Turnbull
2015-10-31  8:24                       ` Eli Zaretskii
2015-10-31  8:32                         ` Andreas Schwab
2015-10-31 11:35                         ` Oleh Krehel
2015-10-31 12:19                         ` David Kastrup
2015-11-02 22:01                           ` Nikolaus Rath
2015-11-03  8:42                             ` David Kastrup
2015-11-03 17:38                               ` Nikolaus Rath
2015-10-31 16:02                         ` On the popularity of git Stephen J. Turnbull
2015-11-01  8:08                           ` Uwe Brauer
2015-10-31 16:50                       ` Alan Mackenzie
2015-10-31 16:58                         ` Dmitry Gutov
2015-11-02 22:05                           ` Nikolaus Rath
2015-11-03  8:39                             ` David Kastrup
2015-10-31 19:24                         ` Stephen J. Turnbull
2015-10-31 20:13                           ` David Kastrup
2015-10-31 21:08                         ` Steinar Bang
2015-10-31 21:15                           ` David Kastrup
2015-10-31 21:48                           ` Alan Mackenzie
2015-11-01  8:17                             ` Steinar Bang
2015-11-01  8:54                               ` David Kastrup
2015-11-01 10:17                                 ` Steinar Bang
2015-11-01 11:15                                   ` Juanma Barranquero
2015-11-02 20:11                                     ` John Wiegley
2015-11-03  7:00                                       ` Oleh Krehel
2015-11-03 10:07                                         ` Dmitry Gutov
2015-11-03 11:58                                           ` Juanma Barranquero
2015-11-03 13:08                                             ` John Wiegley
2015-11-03 13:30                                               ` Juanma Barranquero
2015-11-03 13:38                                                 ` Dmitry Gutov
2015-11-03 13:43                                                   ` Juanma Barranquero
2015-11-03 13:49                                                     ` Dmitry Gutov
2015-11-03 13:58                                                       ` Juanma Barranquero
2015-11-03 14:14                                                         ` Alan Mackenzie
2015-11-03 14:25                                                           ` Juanma Barranquero
2015-11-03 13:43                                                 ` Oleh Krehel
2015-11-03 14:35                                                   ` Óscar Fuentes
2015-11-03 14:52                                                     ` Juanma Barranquero
2015-11-03 15:58                                                     ` Eli Zaretskii
2015-11-03 16:04                                                       ` Dmitry Gutov
2015-11-03 18:14                                                         ` Óscar Fuentes
2015-11-03 19:40                                                     ` Jay Belanger
2015-11-03 20:15                                                       ` John Wiegley
2015-11-03 20:24                                                         ` Drew Adams
2015-11-03 20:35                                                           ` Changing the tone of emacs-devel (Was: On the popularity of git) John Wiegley
2015-11-03 22:05                                                             ` Artur Malabarba
2015-11-04  7:54                                                               ` Nicolas Petton
2015-11-03 21:47                                                         ` Changing the subject (was: " David Kastrup
2015-11-03 23:37                                                           ` Marcin Borkowski
2015-11-04  0:27                                                             ` John Yates
2015-11-04  1:40                                                           ` Changing the subject Yann Hodique
2015-11-04 15:37                                                             ` John Wiegley
2015-11-03 22:11                                                         ` emacs-devel etiquette (was: Re: On the popularity of git) Stephen Leake
2015-11-04 11:12                                                         ` Future emacs mailing lists. [Was: On the popularity of git] Alan Mackenzie
2015-11-04  7:52                                                   ` On the popularity of git Stephen J. Turnbull
2015-11-03 20:53                                                 ` Richard Stallman
2015-11-03 13:49                                           ` Andreas Schwab
2015-10-30 12:50                 ` On the popularity of git [Was: Git question: when using branches, how does git treat working files when changing branches?] Juanma Barranquero
2015-10-30 14:15                   ` David Kastrup
2015-10-30 16:54                     ` Juanma Barranquero
2015-10-30 17:31                       ` David Kastrup
2015-10-29 16:31             ` Git question: when using branches, how does git treat working files when changing branches? Eli Zaretskii
2015-10-29 16:16         ` Eli Zaretskii
2015-10-29 17:45         ` Davis Herring

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=87ziz213wx.fsf@fencepost.gnu.org \
    --to=dak@gnu.org \
    --cc=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=ofv@wanadoo.es \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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.