Git Şube Birleştirme
Dalları Birleştir
Acil durum düzeltmesi hazır, öyleyse ana ve acil durum düzeltme dallarını birleştirelim.
İlk olarak, ana şubeye geçmemiz gerekiyor:
Örnek
git checkout master
Switched to branch 'master'
Şimdi mevcut dalı (master) acil durum düzeltmesi ile birleştiriyoruz:
Örnek
git merge emergency-fix
Updating 09f4acd..dfa79db
Fast-forward
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Acil düzeltme şubesi doğrudan master'dan geldiğinden ve biz çalışırken master'da başka bir değişiklik yapılmadığından Git bunu master'ın bir devamı olarak görüyor. Böylece, aynı işleme hem ana hem de acil düzeltmeyi işaret ederek "Hızlı ileri sarabilir".
Ana ve acil düzeltme artık temelde aynı olduğundan, artık gerekmediğinden acil düzeltmeyi silebiliriz:
Örnek
git branch -d emergency-fix
Deleted branch emergency-fix (was dfa79db).
Çatışmayı Birleştir
Artık merhaba dünya görüntülerine geçebilir ve çalışmaya devam edebiliriz. Başka bir resim dosyası (img_hello_git.jpg) ekleyin ve index.html'yi değiştirin, böylece onu göstersin:
Örnek
git checkout hello-world-images
Switched to branch 'hello-world-images'
Örnek
<!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>
Artık buradaki işimiz bitti ve bu dal için sahne alabilir ve taahhüt verebiliriz:
Örnek
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
Her iki dalda da index.html'nin değiştirildiğini görüyoruz. Artık merhaba-dünya-görüntülerini master ile birleştirmeye hazırız. Ama son zamanlarda ustada yaptığımız değişikliklere ne olacak?
Örnek
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.
index.html sürümleri arasında çakışma olduğundan birleştirme başarısız oldu. Durumu kontrol edelim:
Örnek
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
Bu, index.html'de bir çakışma olduğunu doğrular, ancak görüntü dosyaları hazır ve işlenmeye hazırdır.
Bu yüzden bu çatışmayı düzeltmemiz gerekiyor. Dosyayı düzenleyicimizde açın:
Örnek
<!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>
Sürümler arasındaki farkları görebilir ve istediğimiz gibi düzenleyebiliriz:
Örnek
<!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>
Şimdi index.html'yi hazırlayabilir ve durumu kontrol edebiliriz:
Örnek
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
Çatışma düzeltildi ve birleştirmeyi sonuçlandırmak için taahhüt kullanabiliriz:
Örnek
git commit -m "merged with hello-world-images after fixing conflicts"
[master e0b6038] merged with hello-world-images after fixing conflicts
Ve merhaba-dünya görüntüleri dalını silin:
Örnek
git branch -d hello-world-images
Deleted branch hello-world-images (was 1f1584e).
Artık dalların ve birleştirmenin nasıl çalıştığını daha iyi anladınız. Uzak bir depoyla çalışmaya başlama zamanı!