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

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

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

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

GitHub

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

Q&A

2回答

979閲覧

git fetchとgit fetch origin masterの違い

yamato_user

総合スコア2321

Git

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

GitHub

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

0グッド

1クリップ

投稿2018/12/12 02:39

編集2022/01/12 10:55

題名通りです。

GIT

1git fetch

を行うと、remoteのHEADを取得できますが、

GIT

1git fetch origin master

を行うと、remoteのHEAD^が取得されます

なぜでしょうか?

----補足

GIT

1>>> git branch -a 2* master 3 remotes/origin/HEAD -> origin/master 4 remotes/origin/master

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

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

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

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

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

papinianus

2018/12/12 03:05

リモートとブランチの構成を補足していただけませんか?
guest

回答2

0

こんにちは。

「remoteのHEAD^が取得されます」というのがどういう状況でどのような挙動になっているのか質問からだとわからないのですが、
普通はそのコマンドでもリモートのHEAD自体は取得出来るはずです。

となると、リモートのfetch設定がちょっと変になってたりしないでしょうか?
調査するなら、git config --listでoriginの設定値の確認、git branch -avvでブランチのトラッキング状況の確認等をしてみてください。


git fetchgit fetch origin masterの違いについて。

git fetch origin masterはそのコマンドの通り、originmasterから辿れるオブジェクトを取得します。このとき、ラベルの更新等がどのように行われるかはconfigのリモート設定に依存します。
パラメータを省略したgit fetchは、通常はgit fetch origin +refs/heads/*:refs/remotes/origin/*と同じ意味になります。originの全てのheadsをremotes/origin以下に写すという意味です。

投稿2018/12/12 06:02

tamoto

総合スコア4103

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

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

yamato_user

2018/12/12 06:30

ご回答ありがとうございます。git config --listで確認したところ、「remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*」となっていました。なぜ、git fetch origin masterでHEAD^が取得されるのかわかりません。なにか、ほかにお心当たりはありませんでしょうか?
tamoto

2018/12/12 06:32

「HEAD^が取得される」という状況の詳細を周りの人にも伝わるように緻密に記述して下さい。それだけでは何が起きているのか読み取れません。
yamato_user

2018/12/12 06:42

「HEAD^が取得される」とは、リモートリポジトリのmasterブランチの最終コミットから一つ前のコミットが取得されるという意味です。よろしくお願いいたします。
tamoto

2018/12/12 06:49

相変わらず不足しているので想像で文章を補完しますと、 「fetchを実行した後、ローカルの「origin/master」のラベルがリモートの現行masterの一つ手前のコミットを指す状態に更新される」 という意味で間違いないでしょうか? 「一つ前が取得される」ということは、fetch完了後にローカルで`git show <リモートの現行masterのコミットハッシュ>`と打つとエラーになるということでしょうか?
guest

0

直接の疑問解決となる回答にはならずに恐縮ですが、

-v, --verbose オプションを付けて実行してみると、挙動を掴む手がかりになるかもしれません。

例:

shell

1$ git fetch -v >only-fetch.log 2$ # 細かい動作ログを only-fetch.logに保存。 3 4$ git fetch -v origin master >add-master-fetch.log 5$ # こちらも同じくログがいっぱい出てくる。add-master-fetch.log に保存。 6 7$ # それぞれのログを比較する。例えば以下の様に 8$ diff -u only-fetch.log add-master-fetch.log

参考資料

投稿2018/12/12 05:03

manzyun

総合スコア2244

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問