Bug report: 'git rebase' confusing files with initially equal content

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

 



With the following steps content from one file ends up in another file by using 'git rebase' (and clobbers the original content). It is rather straight forward and I discovered this behaviour when trying to replay http://gitforteams.com/resources/rebasing.html .
The special thing is, that both files have the same content at start.

  $ mkdir rebase
  $ cd rebase
  git --version
  git version 2.9.0
  $ git init
  Initialized empty Git repository in /home/graf/projects/git/rebase/.git/
  $ echo stub >file1
  $ echo stub >file2
  $ git add .
  $ git commit -m 'add stub'
  [master (root-commit) 0cb53e9] Add stubs
   2 files changed, 2 insertions(+)
   create mode 100644 file1
   create mode 100644 file2
  $ git checkout -b feature/1
  Switched to a new branch 'feature/1'
  $ echo line1 >file1
  $ git commit -am 'Add content'
  [feature/1 2f3dcc7] Add content
   1 file changed, 1 insertion(+), 1 deletion(-)
  $ git checkout master
  Switched to branch 'master'
  $ git rm file1
  rm 'file1'
  $ git commit -m 'Delete file1'
  [master 1b18590] Delete file1
   1 file changed, 1 deletion(-)
   delete mode 100644 file1
  $ git checkout feature/1
  Switched to branch 'feature/1'
  $ echo line2 >>file1
  $ git commit -am 'Add more content'
  [feature/1 36be376] Add more content
   1 file changed, 1 insertion(+)
  $ cat file1
  line1
  line2
  $ cat file2
  stub
  $ git rebase master
  First, rewinding head to replay your work on top of it...
  Applying  Add content
  Using index info to reconstruct a base tree...
  A	file1
  Falling back to patching base and 3-way merge...
  Auto-merging file2
  Applying  Add more content
  Using index info to reconstruct a base tree...
  A	file1
  Falling back to patching base and 3-way merge...
  Auto-merging file2
  $ ls -l
  total 8
  -rw-r--r--  1 graf  users  12 14 Jul 13:16 file2
  $ cat file2
  line1
  line2

If instead file1 and file2 initially had different contents, 'git rebase' runs into a merge conflict, so the user can fix it appropriatly.

I suppose this is related to the fact that Git manages the repo by file contents only. Still this is nothing what I would expect (and neither accept).

--
Bernhard Graf
--
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]