Re: Git branches - confusing behavior
- From
Björn Steinbrink <b.steinbrink@gmx.de>
- Date
- May 11, 2008, 12:57 UTC
- Message-ID
- <20080511125722.GA22075@atjola.homenet>
- In-Reply-To
- <4826E791.7030407@gmail.com>
On 2008.05.11 15:33:21 +0300, Dima Kagan wrote:
Show 12 quoted lines
> >> Basically I see that the same file I edited on the 'test_branch' > >> branch appears to be modified on the 'master' branch as well. This > >> behavior is unwanted, of course. > >> > >> Can someone please tell me, what am doing wrong? Or is this git's > >> normal behavior? > > > > I just realized that this behavior is even more confusing. If I > commit the file on 'test_branch' and only then 'git checkout master' > the changes are not visible on 'master' until I merge. So why should > 'master' be affected by uncommitted changes on some branch???
Uncommitted changes are not on any branch, they are in your working tree and/or your index. And actually, SVN does the exact same thing.
# Create a SVN repository with trunk/ and branches/ # ---- $ mkdir svn $ cd svn $ svnadmin create repo $ export REPO="file://$PWD/repo" $ svn co $REPO wc Checked out revision 0. $ cd wc $ svn mkdir trunk branches A trunk A branches $ svn commit -m init Adding branches Adding trunk
Committed revision 1. $ svn switch $REPO/trunk D trunk D branches Updated to revision 1.
# Create some content in trunk # ---- $ echo 123 > testfile $ svn add testfile A testfile $ svn commit -m test Adding testfile Transmitting file data . Committed revision 2.
# Create a branch # ---- $ svn cp $REPO/trunk $REPO/branches/b1 -m branch
Committed revision 3.
# Produce some uncommitted changes on trunk # ---- $ echo 456 > testfile $ svn st M testfile $ svn diff
Index: testfile =================================================================== --- testfile (revision 2) +++ testfile (working copy) @@ -1 +1 @@ -123 +456 # Switch to the branch # ---- $ svn switch $REPO/branches/b1 At revision 3. $ svn st M testfile $ svn diff Index: testfile =================================================================== --- testfile (revision 3) +++ testfile (working copy) @@ -1 +1 @@ -123 +456 The uncommitted changes survived the branch change and are still in the working tree, in svn just like in git. Björn