On 2012-12-17, Andrew Ardill <andrew.ardill@xxxxxxxxx> wrote: > On 17 December 2012 16:06, Woody Wu <narkewoody@xxxxxxxxx> wrote: >> 1. git checkout foo. >> By this command, I think I am checking out files in my local branch >> named foo, and after that I also switch to the branch. Right? > > Correct. Your working directory (files) switch over to whatever your > local branch 'foo' points to, and your HEAD is updated to point to > your local branch 'foo'. Unless something goes wrong/you have > conflicting files/uncommitted changes etc. > >> 2. git checkout origin/foo >> By this command, I am checking out files in remote branch origin/foo, >> but don't create a local branch, so I am not in any branch now. This is >> the reason why git tell me that I am in a 'detached HEAD'. Is this >> understanding right? > > Correct! Your working directory is updated, however it doesn't make > sense for you to make changes to a remote branch, so HEAD is updated > to be detached. > >>> >>> There are lots of patterns that can emerge from this functionality, >>> but the main thing to remember is that to create changes on top of a >>> remote branch, we first need to create a local copy of it. A 'detached >>> HEAD' here means that we are looking at the remote repository's branch >>> but don't have a local copy of it, so any changes we make might be >>> 'lost' (that is, not have an easy to find branch name). >>> >> >> I think here is a little confuse to me. You mean that a 'detached HEAD' >> means I don't have a local copy, but I remember that if I run something >> like: >> $ git checkout a-tag-name >> then I ususally went into 'detached HEAD' but my local files really get >> switched to those files in the tag 'a-tag-name'. So what does you mean >> by 'don't have a local copy'? > > I should have been more clear. Here I mean that you don't have a local > copy of the branch reference. Your working directory is updated to be > in sync with the remote branch, but you haven't yet copied that remote > reference to a local branch that you can update with your changes. > > Hope that clears it up. > Andre, by this in further exaplaination, I think I fully understood. Thanks a lot! -- woody I can't go back to yesterday - because I was a different person then. -- 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