| Push |
| ---- |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; HEAD; feature; C } |
| feature -> C [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| master -> B [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to feature branch on own column |
| I [style=invis] |
| C -> I [style=invis] |
| { rank=same; A; I } |
| |
| // the "push" arrow |
| node [style=invis] |
| L -> R [label="push?", style=dotted, penwidth=2, arrowhead=vee, |
| color=red, fontname=arial, fontsize=30] |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| master1 -> D1 [weight=0] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left, right and arrow graph |
| { rank=same; A; A1; L; R } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; master; space} |
| space [label="some space here"] |
| space -> master [weight=0] |
| |
| { rank=same; HEAD; space2 } |
| space2 [label="spaace"] |
| space2 -> HEAD [weight=0] |
| } |
| ---- |
| |
| Remote branch has changed |
| |
| `Q:` What happens on `git push`? |
| |
| [role="incremental"] |
| `A:` `git push` will fail because fast forward is not possible |
| |
| Push |
| ---- |
| |
| Possibility One |
| |
| * [silver]+fetch+[silver]#,# [silver]+merge+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; HEAD; feature; C } |
| feature -> C [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| master -> B [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to feature branch on own column |
| I [style=invis] |
| C -> I [style=invis] |
| { rank=same; A; I } |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| master1 -> D1 [weight=0] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left and right graph |
| { rank=same; A; A1; } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; master; space} |
| space [label="some space here"] |
| space -> master [weight=0] |
| |
| { rank=same; HEAD; space2 } |
| space2 [label="spaace"] |
| space2 -> HEAD [weight=0] |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility One |
| |
| * +fetch+[silver]#,# [silver]+merge+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", color=red, fontcolor=red] |
| |
| { rank=same; HEAD; feature; C } |
| feature -> C [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| B -> master [dir=back, style=dashed, color=grey] |
| master -> D [weight=0, color=red] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| C -> master [style=invis] |
| { rank=same; D; C } |
| |
| // the "fetch" arrow |
| node [style=invis] |
| L -> R [label="fetch", style=dotted, penwidth=2, arrowhead=vee, |
| color=red, fontname=arial, fontsize=30, dir=back] |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| D1 -> master1 [dir=back] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left, right and arrow graph |
| { rank=same; A; A1; L; R } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; D1; space2 } |
| space2 [label="spaace"] |
| space2 -> D1 |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility One |
| |
| * +fetch+, +merge+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| E [style=filled, fillcolor=darkseagreen1, color=green] |
| E -> D [weight=0, color=green] |
| E -> C [color=green] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [color=red, fillcolor=red, fontcolor=white] |
| feature [color=red, fontcolor=red] |
| featureold [label="feature", style=dashed, color=grey, fontcolor=grey] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; featureold; C } |
| featureold -> C [weight=0, style=dashed, color=grey] |
| |
| { rank=same; HEAD; feature; E } |
| feature -> E [weight=0, color=red] |
| HEAD -> feature [weight=0, color=red] |
| |
| { rank=same; master; B} |
| master -> D [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| C -> master [style=invis] |
| D -> C [style=invis] |
| { rank=same; D; C } |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| D1 -> master1 [dir=back] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left and right graph |
| { rank=same; A; A1 } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; D1; space2 } |
| space2 [label="spaace"] |
| space2 -> D1 |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility One |
| |
| * +fetch+, +merge+, +push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| E [style=filled, fillcolor=darkseagreen1, color=green] |
| E -> D [weight=0, color=green] |
| E -> C [color=green] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; HEAD; feature; E } |
| feature -> E [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| master -> D [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| C -> master [style=invis] |
| { rank=same; D; C } |
| |
| // the "push" arrow |
| node [style=invis] |
| L -> R [label="push", style=dotted, penwidth=2, arrowhead=vee, |
| color=red, fontname=arial, fontsize=30] |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| C1 [label="C"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| E1 [label="E", style=filled, fillcolor=darkseagreen1, color=green] |
| E1 -> D1 [weight=0, color=green] |
| E1 -> C1 [color=green] |
| D1 -> B1 |
| C1 -> B1 [weight=0] |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", color=red, fontcolor=red] |
| { rank=same; master1; E1 } |
| E1 -> master1 [dir=back, color=red] |
| |
| master1old [label="master", style=dashed, color=grey, fontcolor=grey] |
| { rank=same; master1old; B1 } |
| D1 -> master1old [style=dashed, dir=back, color=grey] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // formatting |
| { rank=same; D1; C1 } |
| D1 -> C1 [style=invis] |
| C1 -> master1old [style=invis] |
| |
| // align left, right and arrow graph |
| { rank=same; A; A1; L; R } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; E1; space2 } |
| space2 [label="spaace"] |
| space2 -> E1 |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility Two |
| |
| * [silver]+fetch+[silver]#,# [silver]+rebase+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; HEAD; feature; C } |
| feature -> C [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| master -> B [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to feature branch on own column |
| I [style=invis] |
| C -> I [style=invis] |
| { rank=same; A; I } |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| master1 -> D1 [weight=0] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left and right graph |
| { rank=same; A; A1; } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; master; space} |
| space [label="some space here"] |
| space -> master [weight=0] |
| |
| { rank=same; HEAD; space2 } |
| space2 [label="spaace"] |
| space2 -> HEAD [weight=0] |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility Two |
| |
| * +fetch+[silver]#,# [silver]+rebase+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", color=red, fontcolor=red] |
| |
| { rank=same; HEAD; feature; C } |
| feature -> C [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| B -> master [dir=back, style=dashed, color=grey] |
| master -> D [weight=0, color=red] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| C -> master [style=invis] |
| { rank=same; D; C } |
| |
| // the "fetch" arrow |
| node [style=invis] |
| L -> R [label="fetch", style=dotted, penwidth=2, arrowhead=vee, |
| color=red, fontname=arial, fontsize=30, dir=back] |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| D1 -> master1 [dir=back] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left, right and arrow graph |
| { rank=same; A; A1; L; R } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; D1; space2 } |
| space2 [label="spaace"] |
| space2 -> D1 |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility Two |
| |
| * +fetch+, +rebase+[silver]#,# [silver]+push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| CP [label="C'", style=filled, fillcolor=darkseagreen1, color=green] |
| CP -> D [weight=0, color=green] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [color=red, fillcolor=red, fontcolor=white] |
| feature [color=red, fontcolor=red] |
| master [label="origin/master", fillcolor=lightskyblue] |
| featureold [label="feature", style=dashed, color=grey, fontcolor=grey] |
| |
| { rank=same; HEAD; feature; CP } |
| feature -> CP [weight=0, color=red] |
| HEAD -> feature [weight=0, color=red] |
| |
| { rank=same; featureold; C } |
| featureold -> C [weight=0, style=dashed, color=grey] |
| |
| { rank=same; master; B} |
| master -> D [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| CP -> C [style=invis] |
| C -> master [style=invis] |
| { rank=same; D; C } |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| master1 [label="master", style=filled, fillcolor=lightgrey, color=black] |
| { rank=same; master1; D1 } |
| D1 -> master1 [dir=back] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left and right graph |
| { rank=same; A; A1; } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; D1; space2 } |
| space2 [label="spaace"] |
| space2 -> D1 |
| } |
| ---- |
| |
| Push |
| ---- |
| |
| Possibility Two |
| |
| * +fetch+, +rebase+, +push+ |
| |
| [graphviz] |
| ---- |
| digraph { |
| // commit graph left |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| CP [label="C'", style=filled, fillcolor=darkseagreen1, color=green] |
| CP -> D [weight=0, color=green] |
| D [style=filled, fillcolor=coral1, color=red] |
| D -> B |
| C -> B [weight=0] |
| B -> A |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| HEAD [fillcolor="#555555", fontcolor=white] |
| master [label="origin/master", fillcolor=lightskyblue] |
| |
| { rank=same; HEAD; feature; CP } |
| feature -> CP [weight=0] |
| HEAD -> feature [weight=0] |
| |
| { rank=same; master; B} |
| master -> D [weight=0] |
| |
| // graph name |
| local [label="local repo", style=none, color=none] |
| A -> local [style=invis] |
| |
| // formatting: Add invisible node to have feature branch on own |
| // column on the right |
| CP -> C [style=invis] |
| C -> master [style=invis] |
| { rank=same; D; C } |
| |
| // the "push" arrow |
| node [style=invis] |
| L -> R [label="push", style=dotted, penwidth=2, arrowhead=vee, |
| color=red, fontname=arial, fontsize=30] |
| |
| // commit graph right |
| node [style=bold, shape=circle, color="#385d8a", fontname=arial, fontsize=18] |
| edge [style=bold, color="#385d8a", arrowhead=none] |
| A1 [label="A"] |
| B1 [label="B"] |
| D1 [label="D", style=filled, fillcolor=coral1, color=red] |
| CP1 [label="C'", style=filled, fillcolor=darkseagreen1, color=green] |
| CP1 -> D1 [color=green] |
| D1 -> B1 |
| B1 -> A1 |
| |
| // branch pointers |
| edge [arrowhead=normal] |
| node [shape=box, style=filled, fillcolor=lightgrey, color=black] |
| |
| master1 [label="master", color=red, fontcolor=red] |
| { rank=same; master1; CP1 } |
| CP1 -> master1 [dir=back, color=red] |
| |
| master1old [label="master", style=dashed, color=grey, fontcolor=grey] |
| { rank=same; master1old; D1 } |
| D1 -> master1old [dir=back, style=dashed, color=grey] |
| |
| // graph name |
| remote [label="remote 'origin' repo" shape=box, style=none, color=none] |
| A1 -> remote [style=invis] |
| |
| // align left, right and arrow graph |
| { rank=same; A; A1; L; R } |
| |
| // spacing in between the left and right graph |
| node [style=invis, shape=box] |
| edge [style=invis] |
| { rank=same; CP1; space2 } |
| space2 [label="spaace"] |
| space2 -> CP1 |
| } |
| ---- |