web-dev-qa-db-ja.com

Gitはローカルのすべてのブランチを表示していません

Githubからレポをフォークしました。 git remote -v表示:

Origin  https://github.com/myusername/moodle.git (fetch)
Origin  https://github.com/myusername/moodle.git (Push)
upstream    https://github.com/moodle/moodle.git (fetch)
upstream    https://github.com/moodle/moodle.git (Push)

moodle.gitには約10のブランチがありますが、リポジトリには2つしか表示されません。 git branch -a(すべてのブランチを表示)私が得る:

  MOODLE_24_STABLE// just these two on local..how?
* master//
  Origin/MOODLE_13_STABLE
  Origin/MOODLE_14_STABLE
  Origin/MOODLE_15_STABLE
  Origin/MOODLE_16_STABLE
  Origin/MOODLE_17_STABLE
  Origin/MOODLE_18_STABLE
  Origin/MOODLE_19_STABLE
  Origin/MOODLE_20_STABLE
  Origin/MOODLE_21_STABLE
  Origin/MOODLE_22_STABLE
  Origin/MOODLE_23_STABLE
  Origin/MOODLE_24_STABLE
  Origin/master
  upstream/MOODLE_13_STABLE
  upstream/MOODLE_14_STABLE
  upstream/MOODLE_15_STABLE
  upstream/MOODLE_16_STABLE
  upstream/MOODLE_17_STABLE
  upstream/MOODLE_18_STABLE
  upstream/MOODLE_19_STABLE
  upstream/MOODLE_20_STABLE
  upstream/MOODLE_21_STABLE
  upstream/MOODLE_22_STABLE
  upstream/MOODLE_23_STABLE
  upstream/MOODLE_24_STABLE
  upstream/master

データの損失や不規則性なしに問題を解決するにはどうすればよいですか?

17
xan

リポジトリを複製しても、ローカルリポジトリのすべてのリモートブランチが複製されるわけではありません。多数のブランチを持つ大きなリモートリポジトリの場合、大量のブランチでローカルの名前空間を汚染します。

リモートリポジトリのすべてのリモートブランチを追跡するローカルブランチを作成するために one-liner command を使用していますが、これは通常必要ありません。
必要に応じて、リモートブランチを追跡するローカルブランチのみを作成します。

git checkout -b aBranch --track Origin/aBranch

# or, shorter:
$ git checkout --track Origin/aBranch 
Branch aBranch set up to track remote branch refs/remotes/Origin/aBranch.
Switched to a new branch "aBranch"  

# even shorter at the end of this answer.

--trackを追加すると、開始点ブランチを「pstream」としてマークするように構成を設定できます新しいブランチ。
この構成は、git statusgit branch -vの2つのブランチ間の関係を示すようにgitに指示します。
さらに、新しいブランチがチェックアウトされるときに、引数なしでgit pullに上流からプルするように指示します。


kostix は、リモートブランチからブランチをフォークするときに--trackが暗黙的に含まれることを述べています(branch.autosetupmergefalseに設定されている場合を除く)

これで十分かもしれません

git checkout aBranch

git checkout man page からの正確な説明は次のとおりです。

<branch>が見つからないが、名前が一致する1つのリモート(<remote>と呼ぶ)に追跡ブランチが存在する場合は、以下と同等に扱います。

$ git checkout -b <branch> --track <remote>/<branch
19
VonC

最新のコードをプルしないと、新しく作成されたブランチをチェックアウトできない場合があります。変更が同期していないためです。

したがって、最初に、新しく作成されたブランチから最新の-checkoutをプルします

5
Grace Aloysius