TECH I.S.

Git ブランチのマージ


プラットフォームを変更します:

Shift focus to GitHubGitHubShift focus to BitbucketBitbucketShift focus to GitLabGitLab

ブランチをマージする



緊急修正の準備ができたので、masterとemergency-fixブランチをマージしよう。

まず、masterブランチに変更する必要があります。

git checkout master
Switched to branch 'master'
次に、現在のブランチ(master)を緊急修正とマージします。

git merge emergency-fix
Updating 09f4acd..dfa79db
Fast-forward
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
emergency-fixブランチはmasterから直接取得されたものであり、作業中にmasterに他の変更が加えられていなかったため、Gitはこれをmasterの継続であると見なします。したがって、masterとemergency-fixの両方を同じコミットに指定するだけで「Fast-forward」という操作が行われます。

masterとemergency-fixは基本的に同じになっているため、emergency-fixは不要になったので削除できます。

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

Merge Conflict


これで、hello-world-imageに移動して作業を続けることができます。別の画像ファイル (img_hello_git.jpg)を追加し、index.htmlを変更して、次のように表示します。

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

<!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>
これで、ここでの作業は完了したので、このブランチのステージングとコミットを行うことができます。

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
両方のブランチでindex.htmlが変更されていることがわかります。これで、hello-world-imageをmasterにマージする準備が整いました。しかし、最近masterに加えた変更はどうなるでしょうか?

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のバージョン間に競合があるため、マージは失敗しました。ステータスを確認してみましょう。

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 ..." to mark resolution)
        both modified:   index.html
これにより、index.htmlに競合があることが確認されますが、画像ファイルはコミットする準備ができており、ステージングされています。

したがって、その矛盾を修正する必要があります。エディタでファイルを開きます。

<!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>
バージョン間の違いを確認し、必要に応じて編集できます。

<!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>
これで、index.htmlをステージングしてステータスを確認できるようになりました。

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
競合は修正されたので、commitを使用してマージを完了できます。

git commit -m "merged with hello-world-images after fixing conflicts"
[master e0b6038] merged with hello-world-images after fixing conflicts
そして、hello-world-imagesブランチを削除します。

git branch -d hello-world-images
Deleted branch hello-world-images (was 1f1584e).
これで、分岐とマージがどのように機能するかについてよりよく理解できました。リモートリポジトリの使用を開始しましょう。

プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細