git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: John Dlugosz <JDlugosz@TradeStation.com>, git@vger.kernel.org
Subject: Re: Files different for me
Date: Wed, 25 Feb 2009 10:51:16 -0800	[thread overview]
Message-ID: <7v4oyi2vvf.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.LFD.2.00.0902250957260.3111@localhost.localdomain> (Linus Torvalds's message of "Wed, 25 Feb 2009 10:04:22 -0800 (PST)")

Linus Torvalds <torvalds@linux-foundation.org> writes:

> If your changes do not touch any of the files that the "git pull" updates, 
> then everything is fine. The pull will just work, and your changes will 
> still exists in your tree. This is not an accident - git was very much 
> designed to work that way, because it's a common usage case for me.
>
> I often have some trivial small changes in my tree (like a pending change 
> to the top-level Makefile for the next version number that I just haven't 
> committed yet - just a reminder to myself that I'm soon about to release 
> another -rc). And I still want to continue to do "git pull" to fetch 
> stuff, or even "git am -s" to apply patches.
>
> HOWEVER. If the pull actually wants to modify a file that you have changed 
> (ie that same file was changed in the remote), then "git pull" will fail 
> gracefully after having done the fetch, saying something like
>
> 	Entry 'file-name' not uptodate. Cannot merge.
>
> and at that point you have to decide whethe you want to commit the change, 
> "stash" it, or just undo it. Or whether you don't want to do the merge 
> yet because you're still working on your own changes, and don't want the 
> distraction.

I've been repeating the above to new people to save you time, but recently
I noticed one thing.

The handling of a case where a pull decides to go ahead (because it does
not have to touch the Makefile you have your codename updates in) but does
not complete with real conflicts, is not as graceful as the other two
cases (merge refusing to run at all without touching anything, or merge
completes cleanly and makes a commit).

You will be left with:

 - Paths that have local changes (index matches HEAD but work tree does
   not match the index --- like your Makefile);

 - Paths cleanly merged (index and HEAD are different but work tree
   already matches the index);

 - Unmerged paths (index has higher stage entries with <<</===/>>> files
   in the work tree);

You, I and experienced users know what to do.  Deal *only* with the last
kind, mark them with "git add" after you are done with each of them, and
make sure you do not say "-a" when committing the result, to exclude the
first kind from the merge result.

I've been wondering if we can make this safer for others.

  reply	other threads:[~2009-02-25 18:52 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-25 16:11 Files different for me John Dlugosz
     [not found] ` <16946e800902250840o677f8708x7c0bf8980e004b91@mail.gmail.com>
2009-02-25 16:42   ` Feanil Patel
2009-02-25 17:05 ` Brian Gernhardt
2009-02-25 18:02   ` John Dlugosz
2009-02-25 18:38     ` Brian Gernhardt
2009-02-25 19:01       ` John Dlugosz
2009-02-25 18:44     ` Matthieu Moy
2009-02-25 17:55 ` Junio C Hamano
2009-02-25 18:04 ` Linus Torvalds
2009-02-25 18:51   ` Junio C Hamano [this message]
2009-02-25 19:12     ` Linus Torvalds
2009-02-25 20:06       ` Junio C Hamano
2009-02-25 20:14         ` Linus Torvalds
2009-02-25 19:16     ` Jay Soffian
2009-02-25 19:38       ` John Dlugosz
2009-02-25 19:23     ` John Dlugosz
2009-02-25 20:04       ` Junio C Hamano

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=7v4oyi2vvf.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=JDlugosz@TradeStation.com \
    --cc=git@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).