Samouczek Gita


Git i {{title}}


Git Contribute


Git Zaawansowany


Git Cofnij




Scalanie gałęzi Git


Połącz gałęzie

Mamy gotową poprawkę awaryjną, więc połączmy gałęzie master i Emergency-fix.

Najpierw musimy przejść do gałęzi master:

Przykład

git checkout master
Switched to branch 'master'

Teraz łączymy aktualny branch (master) z Emergency-fix:

Przykład

git merge emergency-fix
Updating 09f4acd..dfa79db
Fast-forward
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Ponieważ gałąź Emergency-Fix ​​pochodzi bezpośrednio od mastera i podczas naszej pracy nie wprowadzono żadnych innych zmian do mastera, Git postrzega to jako kontynuację mastera. Może więc „przewijać do przodu”, po prostu wskazując zarówno główną, jak i awaryjną poprawkę na to samo zatwierdzenie.

Ponieważ master i Emergency-fix są teraz zasadniczo takie same, możemy usunąć Emergency-Fix, ponieważ nie jest już potrzebny:

Przykład

git branch -d emergency-fix
Deleted branch emergency-fix (was dfa79db).

Scal konflikt

Teraz możemy przejść do hello-world-images i kontynuować pracę. Dodaj kolejny plik obrazu (img_hello_git.jpg) i zmień index.html, aby go wyświetlał:

Przykład

git checkout hello-world-images
Switched to branch 'hello-world-images'

Przykład

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>

</body>
</html>

Teraz skończyliśmy pracę tutaj i możemy zainscenizować i zobowiązać się do tej gałęzi:

Przykład

git add --all
git commit -m "added new image"
[hello-world-images 1f1584e] added new image
 2 files changed, 1 insertion(+)
 create mode 100644 img_hello_git.jpg

Widzimy, że index.html został zmieniony w obu gałęziach. Teraz jesteśmy gotowi połączyć obrazy hello-world w mistrz. Ale co się stanie ze zmianami, które ostatnio wprowadziliśmy w masterze?

Przykład

git checkout master
git merge hello-world-images
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

Scalanie nie powiodło się, ponieważ istnieje konflikt między wersjami index.html. Sprawdźmy status:

Przykład

git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Changes to be committed:
        new file:   img_hello_git.jpg
        new file:   img_hello_world.jpg

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   index.html

Potwierdza to konflikt w index.html, ale pliki obrazów są gotowe i przygotowane do zatwierdzenia.

Więc musimy rozwiązać ten konflikt. Otwórz plik w naszym edytorze:

Przykład

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<<<<<<< HEAD
<p>This line is here to show how merging works.</p>
=======
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
>>>>>>> hello-world-images

</body>
</html>

Możemy zobaczyć różnice między wersjami i edytować je tak, jak chcemy:

Przykład

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>

</body>
</html>

Teraz możemy postawić index.html i sprawdzić status:

Przykład

git add index.html
git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
        new file:   img_hello_git.jpg
        new file:   img_hello_world.jpg
        modified:   index.html

Konflikt został naprawiony i możemy użyć zatwierdzenia, aby zakończyć scalenie:

Przykład

git commit -m "merged with hello-world-images after fixing conflicts"
[master e0b6038] merged with hello-world-images after fixing conflicts

I usuń gałąź hello-world-images:

Przykład

git branch -d hello-world-images
Deleted branch hello-world-images (was 1f1584e).

Teraz lepiej rozumiesz, jak działają gałęzie i łączenie. Czas zacząć pracę ze zdalnym repozytorium!

Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Połącz hello-yougałąź z gałęzią bieżącą:

git  hello-you