在這個例子中,git並不認爲它需要重定位,但很明顯。爲什麼這個git rebase認爲沒有什麼可做的?
下面是一個簡單的腳本在這之後運行,以創建一個小型測試git倉庫
#!/bin/bash
rm -rf testgit
mkdir testgit
cd testgit
git init
echo -e "a\nb\nc" > file
git add file
git commit -am 'first'
git checkout -b lineA
echo -e "A\nb\nc" > file
git commit -am 'A'
git checkout -b lineB
echo -e "a\nB\nc" > file
git commit -am 'B'
git checkout -b lineC
echo -e "a\nb\nC" > file
git commit -am 'C'
,這裏是file
看起來像每個分支
master | lineA | lineB | lineC
------------------------------
a A a a
b b B b
c c c C
現在,讓我們所有的分支機構合併成高手,之後file
中的每個字母應該大寫
$ git checkout master
$ git merge lineA
好的。
$ git checkout lineB
$ git rebase master
Current branch lineB is up to date.
什麼?不,主人改變了。
$ git checkout master
$ cat file
A
b
c
$ git checkout lineB
$ cat file
a
B
c
在我看來,分支lineB需要重新綁定,以將合併lineA所做的更改合併到master中。
爲什麼不git認爲這需要做?
此外,如果你這樣做
$ git checkout master
$ git merge lineA
Already up-to-date.
$ git merge lineB
...
1 file changed, 2 insertions(+), 2 deletions(-)
$ cat file
a
B
c
$ git merge lineC
...
1 file changed, 2 insertions(+), 2 deletions(-)
$ cat file
a
b
C
這裏的合併應該發生衝突,但Git是悄悄重挫他們。我不知道這是否相關,但似乎很奇怪。
我想也一樣。使用git擴展來查看你的分支樹形狀。對於我來說,所有你創建的分支都有他們的主人,所以git以它的方式告訴你,不需要rebase。在這一點上,你只需要合併 –