[解決済み] ローカルブランチ、ローカルトラッキングブランチ、リモートブランチ、リモートトラッキングブランチの違いは何ですか?
質問
Git を使い始めたばかりなのですが、ブランチの種類が多くて混乱しています。どなたか、以下のブランチの種類について教えていただけませんか?
- ローカルブランチ
- ローカル・トラッキング・ブランチ
- リモートブランチ
- リモートトラッキングブランチ
両者の違いは何でしょうか?また、それらはどのように連携しているのでしょうか?
簡単なデモコードがあれば本当に助かると思います。
どのように解決するのですか?
A ローカルブランチ は、あなた(ローカルユーザー)だけが見ることのできるブランチです。あなたのローカルマシン上にのみ存在します。
git branch myNewBranch # Create local branch named "myNewBranch"
A
リモートブランチ
は、遠隔地にあるブランチ(ほとんどの場合
origin
). 新しく作成したローカルブランチをプッシュすることで
myNewBranch
から
origin
. これで他のユーザーも追跡できるようになりました。
git push -u origin myNewBranch # Pushes your newly created local branch "myNewBranch"
# to the remote "origin".
# So now a new branch named "myNewBranch" is
# created on the remote machine named "origin"
A
リモートトラッキングブランチ
は、リモートブランチのローカルコピーです。いつ
myNewBranch
にプッシュされます。
origin
という名前のリモートトラッキングブランチが作成されます。
origin/myNewBranch
があなたのマシンに作成されます。このリモート追跡ブランチは、リモートブランチ
myNewBranch
で
origin
. を更新することができます。
リモートトラッキングブランチ
と同期させることができます。
リモートブランチ
を使って
git fetch
または
git pull
.
git pull origin myNewBranch # Pulls new commits from branch "myNewBranch"
# on remote "origin" into remote tracking
# branch on your machine "origin/myNewBranch".
# Here "origin/myNewBranch" is your copy of
# "myNewBranch" on "origin"
A
ローカル追跡ブランチ
は
ローカルブランチ
は、他のブランチを追跡しています。これは、もう一方のブランチとの間でコミットをプッシュ/プルできるようにするためです。ローカル追跡ブランチは、ほとんどの場合リモート追跡ブランチを追跡します。ローカルブランチを
origin
を使用して
git push
コマンドで
-u
オプションを指定すると (上の図のように)、ローカルブランチの
myNewBranch
を追跡し、リモート追跡ブランチ
origin/myNewBranch
. を使用するために必要です。
git push
と
git pull
にプッシュしたりプルしたりする上流を指定しない。
git checkout myNewBranch # Switch to myNewBranch
git pull # Updates remote tracking branch "origin/myNewBranch"
# to be in sync with the remote branch "myNewBranch"
# on "origin".
# Pulls these new commits from "origin/myNewBranch"
# to local branch "myNewBranch which you just switched to.
関連
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] .gitignoreと.gitkeepの違いは何ですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] どの Git ブランチがどのリモート/アップストリームブランチを追跡しているかを確認するにはどうすればよいですか?
-
[解決済み] 古いリモート git ブランチのクリーンアップ
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] git stashを元に戻す
-
[解決済み] ブラウンアウトの一環として、パスワード認証が一時的に無効になっています。代わりに個人用アクセストークンを使用してください[重複]。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] git pull origin master と git pull origin/master の違いについて
-
[解決済み】上流に変更があるのに、git status がブランチを最新と表示するのはなぜですか?
-
[解決済み】ファイル履歴を壊さずに2つのGitリポジトリをマージする