Penggabungan Cabang Git
Gabungkan Cabang
Kami telah menyiapkan perbaikan darurat, jadi mari gabungkan cabang master dan perbaikan darurat.
Pertama, kita perlu mengubah ke cabang master:
Contoh
git checkout master
Switched to branch 'master'
Sekarang kami menggabungkan cabang saat ini (master) dengan perbaikan darurat:
Contoh
git merge emergency-fix
Updating 09f4acd..dfa79db
Fast-forward
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Karena cabang perbaikan darurat datang langsung dari master, dan tidak ada perubahan lain yang dibuat untuk master saat kami bekerja, Git melihat ini sebagai kelanjutan dari master. Jadi itu bisa "Maju cepat", hanya dengan mengarahkan master dan perbaikan darurat ke komit yang sama.
Karena master dan perbaikan darurat pada dasarnya sama sekarang, kami dapat menghapus perbaikan darurat, karena tidak lagi diperlukan:
Contoh
git branch -d emergency-fix
Deleted branch emergency-fix (was dfa79db).
Gabungkan Konflik
Sekarang kita bisa pindah ke hello-world-images dan terus bekerja. Tambahkan file gambar lain (img_hello_git.jpg) dan ubah index.html, jadi ini menunjukkannya:
Contoh
git checkout hello-world-images
Switched to branch 'hello-world-images'
Contoh
<!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>
Sekarang, kita sudah selesai dengan pekerjaan kita di sini dan dapat melakukan stage dan commit untuk cabang ini:
Contoh
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
Kami melihat bahwa index.html telah diubah di kedua cabang. Sekarang kita siap untuk menggabungkan hello-world-images menjadi master. Tapi apa yang akan terjadi dengan perubahan yang baru-baru ini kita buat di master?
Contoh
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.
Penggabungan gagal, karena ada konflik antara versi untuk index.html. Mari kita periksa statusnya:
Contoh
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
Ini menegaskan ada konflik di index.html, tetapi file gambar sudah siap dan dipentaskan untuk dikomit.
Jadi kita perlu memperbaiki konflik itu. Buka file di editor kami:
Contoh
<!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>
Kita dapat melihat perbedaan antara versi dan mengeditnya seperti yang kita inginkan:
Contoh
<!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>
Sekarang kita dapat menampilkan index.html dan memeriksa statusnya:
Contoh
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
Konflik telah diperbaiki, dan kita dapat menggunakan commit untuk menyimpulkan penggabungan:
Contoh
git commit -m "merged with hello-world-images after fixing conflicts"
[master e0b6038] merged with hello-world-images after fixing conflicts
Dan hapus cabang hello-world-images:
Contoh
git branch -d hello-world-images
Deleted branch hello-world-images (was 1f1584e).
Sekarang Anda memiliki pemahaman yang lebih baik tentang cara kerja cabang dan penggabungan. Saatnya mulai bekerja dengan repositori jarak jauh!