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

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

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

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

GitHub

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

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

GitBucket

GitBucketとはScalaで実装され、Java仮想マシンで動作するリポジトリ管理ツールです。Webブラウザから管理することができます。 「GitHubクローン」と謳うだけあり、GitHubとよく似たUIを持ちます。

Q&A

解決済

2回答

4125閲覧

git fetchせずに、リモートブランチを最新の状態にしたい

kf_hate3

総合スコア7

Git

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

GitHub

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

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

GitBucket

GitBucketとはScalaで実装され、Java仮想マシンで動作するリポジトリ管理ツールです。Webブラウザから管理することができます。 「GitHubクローン」と謳うだけあり、GitHubとよく似たUIを持ちます。

1グッド

0クリップ

投稿2016/01/06 06:51

編集2016/01/06 07:06

ローカルと接続されているリモートレポジトリが2つあります。

  • origin
  • hoge

自分以外の誰かが、originに新しくnew_branchというブランチを作った際に、
git branch new_branch origin/new_branchというコマンドをたたくと、ローカルにnew_branchが作成されます。

自分以外の誰かが、hogeに新しいnew_branchというブランチを作った際に、
git branch new_branch hoge/new_branchというコマンドをたたくと、ブランチが見つからないというエラーが返ってくるので、git fetchを行って毎回リモートレポジトリを最新の状態?にしています。

リモートブランチをローカルに持ってくる際の操作が、上記2つで異なってしまったのだと思います。
毎回git fetchをするのは手間なので、解決方法をご教授いただけると幸いです。

mhashi👍を押しています

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

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

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

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

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

guest

回答2

0

自分以外の誰かが、originに新しくnew_branchというブランチを作った際に、 git branch new_branch origin/new_branchというコマンドをたたくと、ローカルにnew_branchが作成されます。

という点に認識誤りがあります。

git branch -aコマンドでブランチ一覧が表示されます。これがその時点で分岐元として指定可能なブランチです。
originであろうがhogeであろうが、本当に他人がブランチを作成した直後であればこの一覧には表示されず、ブランチ元にも指定できないでしょう。

リモートブランチは予めgit fetch相当を実行し(remote-tracking branchとして)認識させておく必要があります。

ではなぜoriginに対してgit fetchしなくてもリモートブランチが認識できているように見えるのか、というと、おそらくoriginに対してgit pullを行っている(その際fetchが実行されリモートブランチが認識される)ためでしょう。

もしそうであるならば、git pull実行時に--allオプションを付与してやることでhogeリポジトリも同時にfetchされるようになり、originに対するbranchingと同じ操作感になるはずです。

投稿2016/01/07 02:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kf_hate3

2016/01/07 03:54

>ではなぜoriginに対してgit fetchしなくてもリモートブランチが認識できているように見えるのか、というと、おそらくoriginに対してgit pullを行っている(その際fetchが実行されリモートブランチが認識される)ためでしょう。 まさしくその通りでした。。ご丁寧に指導いただきありがとうございます。 今回は、毎回git fetchの手間を省くことが目的でしたので、shienaさんの回答をベストアンサーにさせていただきます。 ありがとうございました!
guest

0

ベストアンサー

git fetchはリモートリポジトリの変更をローカルリポジトリに反映させるコマンドなので省略することはできません。
その代わりにbashなどシェルのaliasでfetchとbranchを実行するように定義する方法があります。

alias branch="git fetch && git branch"

これで以下のように1回のコマンドで済みます。

$ branch new_branch hoge/new_branch

投稿2016/01/06 07:32

shiena

総合スコア1825

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

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

kf_hate3

2016/01/07 03:51

知りませんでしたが、bashファイルにショートカットのようなものを設定できるんですね...! http://postd.cc/git-command-line-shortcuts/ 毎回git fetchをするのは手間を省くことが目的でしたので、shienaさんの回答をベストアンサーにさせていただきます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問