Git - rebase zamiast merge

Stronę tą wyświetlono już: 46 razy

Czas spróbować rebase zamiast merge. W tym celu upewniwszy się, że jestem na develop-ie stworzę branch-a o nazwie 003_styles:

git checkout -b 003_styles

Następnie dodam trochę styli do strony w pliku style.css:

Listing 1
  1. html, body {
  2. padding: 0;
  3. }
  4. h2 {
  5. text-align: center;
  6. }
  7. aside {
  8. width: 200px;
  9. max-width: 100vw;
  10. margin: 5px;
  11. padding: 5px;
  12. border-radius: 5px;
  13. margin: auto;
  14. background-color: azure;
  15. text-align: center;
  16. }
  17. aside:hover {
  18. background-color: beige;
  19. }

I jeszcze zmiana wpliku index.html:

Listing 2
  1. <!DOCTYPE html>
  2. <html lang="PL">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <link rel="stylesheet" href="style.css"></link>
  8. <title>Zabawa z gitem!</title>
  9. </head>
  10. <body>
  11. <h2>Zabawa z gitem</h2>
  12. <aside>
  13. Git zabawny wszakże jest
  14. Kontroluje wszystko wnet!
  15. </aside>
  16. </body>
  17. </html>

Czas dodać zmiany:

git add *
PS C:UsersJaDesktopgit_playground> git commit -m "add styles"
[003_styles 3eea9e5] add styles
 2 files changed, 23 insertions(+)
 create mode 100644 style.css

A teraz przełączę się na 002_some_content:

git checkout 002_some_content

i zmienię w index.html tekst:

Listing 3
  1. <aside>
  2. Git zabawny wszakże jest
  3. Kontroluje wszystko wnet!
  4. </aside>

na:

Listing 4
  1. <aside>
  2. Git zabawny wszakże jest
  3. Kontroluje wszystko wnet!
  4. Cuda zdziała i mergeuje
  5. Rebasuje konflikuje
  6. </aside>

I dodaję zmiany:

git add *
git commit -m "more poem"
[002_some_content 8037ef7] more poem
 1 file changed, 2 insertions(+)

Teraz merge-uję:

git merge develop 
Auto-merging index.html
Merge made by the 'recursive' strategy.
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Gdyby były konflikty w tym przypadku rozwiązałbym je na moim 002_some_content a następnie rozwiązałbym je lokalnie. Teraz muszę przełączyć się na develop-a:

git checkout develop

I merge 002_some_content:

git merge 002_some_content
Updating e1928fc..d3b1c61
Fast-forward
 index.html | 2 ++
 1 file changed, 2 insertions(+)

teraz przełączam się na 003_styles:

git checkout 003_styles

I w końcu rebase:

git rebase develop
First, rewinding head to replay your work on top of it...
Applying: add styles

Teraz ten branch może zostać merge-owany w trybie straight forward:

git checkout develop
git merge 003_styles
Updating d3b1c61..3e20fe3
Fast-forward
 index.html |  1 +
 style.css  | 22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100644 style.css

Małe diagramy gdy działania rebase gdy nie ma konfliktów:

          A---B---C topic
         /
    D---E---F---G master
po
                  A'--B'--C' topic
                 /
    D---E---F---G master

Zaś gdy zawiera konflikty:

          A---B---C topic
         /
    D---E---A'---F master
po
                   B'---C' topic
                  /
    D---E---A'---F master

Komentarze