質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

1回答

1129閲覧

git merge FETCH_HEADとgit merge origin ~の違いを教えてください。

Dave.H

総合スコア1

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2021/08/06 06:54

git fetch origin 〜をした後のmergeについてですが、
git merge FETCH_HEADとgit merge origin ~の違いはあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anozon

2021/08/06 07:27

git merge origin ~の チルダはなにか文字列が入るという表現ですか? git における ~ 記号ですか?
Dave.H

2021/08/06 07:32

~は例えばdevelopやmasterが入る事を意味しておりました!
hoshi-takanori

2021/08/06 22:26 編集

たぶん、git merge origin ~ ではなく git merge origin/~ のことでは? git fetch と git merge では引数に例えば origin develop と書いたときの意味が違って、 - git fetch origin develop は origin の develop ブランチを fetch するという意味ですが、 - git merge origin develop は、現在のブランチに origin と develop の 2 つを同時にマージするという意味になります。 (ここで、origin がリモート名ならその HEAD (git branch -a で remotes/origin/HEAD -> origin/master とか表示されるやつ)、develop はローカルの develop ブランチを指すはず。また、現在のブランチが develop だったり、develop がすでにマージ済みであれば無視されると思います。) git fetch origin develop の直後なら、git merge FETCH_HEAD は git merge origin/develop の意味になるようです。 https://stackoverflow.com/questions/9237348/what-does-fetch-head-in-git-mean
Dave.H

2021/08/07 01:47

まさに、git merge FETCH_HEAD と git merge origin/developを意味しておりました! git fetch origin develop の直後は基本的にはgit merge origin/developではなく、git merge FETCH_HEADを使用するということでしょうか。
guest

回答1

0

はい、違いはあります。

git merge FETCH_HEADは「最後にfetchされたリモート追跡ブランチ(例えばorigin/master)と現在のブランチをマージせよ」という意味です。

git merge origin masterは「リモート追跡ブランチorigin/HEADとローカルブランチmaster2つのブランチを現在のブランチにマージせよ」という意味です。
originというリモートレポジトリのmasterというブランチをマージせよ、という意味のコマンドではありません。

これは3つの親を持つマージコミットを作成しようとするコマンド(俗に言うタコマージ)ですが、たまたま現在のブランチがmasterであった場合は「origin/HEADmastermaster」をマージしようとするので、2つの親を持つマージコミットが作成されます。

originというリモートレポジトリのmasterというブランチをマージしたい場合は、git merge origin/masterを使ってください。

投稿2021/08/07 00:17

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問