In diesem Beispiel denkt git nicht, dass es umbasen muss, aber es tut es eindeutig.Warum denkt dieser Gitarrist, dass es nichts zu tun gibt?
Hier ist eine schnelle Skript ist ein Mini-Test Git Repository
#!/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'
Danach läuft, ist hier zu schaffen, was file
wie in jedem Zweig
master | lineA | lineB | lineC
------------------------------
a A a a
b b B b
c c c C
Jetzt ist sieht alle Zweige in Master lassen fusionieren, danach sollte jeder Buchstabe in file
groß geschrieben werden
$ git checkout master
$ git merge lineA
Okay.
$ git checkout lineB
$ git rebase master
Current branch lineB is up to date.
Was? Nein, der Meister hat sich geändert.
$ git checkout master
$ cat file
A
b
c
$ git checkout lineB
$ cat file
a
B
c
Es scheint mir, dass Branch lineB muss Rebase die Änderung zu Master durch Fusion LineA übernommen enthalten.
Warum denkt Git nicht, dass dies getan werden muss?
Außerdem, wenn Sie das tun
$ 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
Hier werden die Verschmelzungen sollte in Konflikt geraten, aber git ist clobbering sie leise. Ich weiß nicht, ob das relevant ist, aber es scheint komisch.
ich denke das Gleiche. Verwenden Sie die Erweiterung git, um die Form Ihrer Zweige zu sehen. Für mich haben alle deine erstellten Zweige ihren Ursprung auf Master, also sagt dir Git auf seine Art, dass keine Rebase benötigt wird. An dieser Stelle müssen Sie nur zusammenführen –