Re: Can I checkout a single file without altering index?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 15, 2010 at 02:32:52PM -0500, Jonathan Nieder wrote:

> > git commit -o|--only, which is the same as "git commit <paths>". Of
> > course it still uses an index, to create the tree, but it uses a
> > temporary one based on HEAD instead of the current index contents.
> 
> Ah, it's stranger than that.
> 
> 	 * A partial commit.
> 	 *
> 	 * (0) find the set of affected paths;
> 	 * (1) get lock on the real index file;
> 	 * (2) update the_index with the given paths;
> 	 * (3) write the_index out to the real index (still locked);
> 	 * (4) get lock on the false index file;
> 	 * (5) reset the_index from HEAD;
> 	 * (6) update the_index the same way as (2);
> 	 * (7) write the_index out to the false index file;
> 	 * (8) return the name of the false index file (still locked);
> 
> The net effect being that the index will match the work tree for the
> listed paths when the operation is over, while other files are
> untouched.

Well, yeah, it does have to update those files in the regular index. Any
other semantics would be insane; the change would appear reverted
looking at the difference between HEAD and the index.

With respect to your proposed change:

> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> index 42fb1f5..6bb3eff 100644
> --- a/Documentation/git-commit.txt
> +++ b/Documentation/git-commit.txt
> @@ -191,9 +191,10 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
>  --only::
>  	Make a commit only from the paths specified on the
>  	command line, disregarding any contents that have been
> -	staged so far. This is the default mode of operation of
> -	'git commit' if any paths are given on the command line,
> -	in which case this option can be omitted.
> +	staged so far.  The state of other files in the index is
> +	preserved and will not affect the commit.  This is the
> +	default mode of operation of 'git commit' if any paths are given
> +	on the command line, in which case this option can be omitted.

I always assumed that "disregarding any contents that have been staged"
meant "we will leave unmentioned paths alone". But I don't think it
hurts to be explicit. So your change looks fine to me.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]