[解決済み] git push.default=current と push.default=upstream の違いは何ですか?
質問
git-configのmanページには、push.defaultのオプションが記載されています。
nothing - do not push anything.
matching - push all matching branches. All branches having the same name in both ends are considered to be matching. This is the default.
upstream - push the current branch to its upstream branch.
tracking - deprecated synonym for upstream.
current - push the current branch to a branch of the same name.
ほとんどの場合、上流のブランチは通常同じ名前であり、同じ名前のブランチ ("current") は通常 (あるいは定義上常に?) 上流であるため、ブランチの上流のブランチにプッシュすることは同じであると仮定します。 では、何が違うのでしょうか?
アップデイト : git-config のマニュアルページ が更新されたので(予想通り)、その区別のために が追加されました。 の区別はかなり明確になったのではないでしょうか。
どのように解決するのですか?
質問の中に、その違いがまとめられていますね。
upstream
にプッシュします。
構成された
上流ブランチにプッシュし、一方
current
は上流ブランチが同じ名前であると仮定しています。
現在の
と同じ名前であると仮定し、その特定の名前にプッシュします。実際には、ローカル ブランチの上流追跡ブランチがローカル ブランチ自身と同じ名前であると仮定する理由はありません。
たとえば、複数のリポジトリや多くの開発者用リモートを共有して作業している場合、同じブランチの異なるフォークを追跡することになることがよくあり、たとえば
allen-master
あるいは
susan-master
を追跡し、どちらも
master
ブランチをそれぞれ追跡します。この場合
current
は間違った設定です。なぜなら、これらのブランチ名はそれぞれのリモートには存在しないからです。
upstream
というのは、これらのブランチ名はリモートには存在しないからです。しかし、うまく動作するでしょう。
より実用的な例としては
development
と
production
というリポジトリがあります。ワークフローではそれぞれ別のメインラインブランチを使用するかもしれませんが、それは混乱を招くかもしれません。たとえば、あなたがコードインテグレータで、両方のリポジトリの
master
ブランチを別々に追跡したいとします。
git checkout -b production --track production/master
git checkout -b development --track development/master
これで、それぞれのリポジトリを追跡する二つのブランチができましたが、どちらも
master
という命名規則をまったく使っていません。ブランチの名前について混乱することはほとんどありません。ブランチ名は何を追跡しているかを明確に表しているからです。とはいえ
push.default = current
は意味をなさないので、どちらのリモートにも
development
または
production
という分岐があります。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] git add -A」と「git add .」の違い。
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
致命的 リモートレフマスターが見つからない
-
gpg: "xxx" をスキップ: 秘密鍵のための1つの解決策が利用できない
-
Note: Git prompts このリポジトリで別の git プロセスが実行されているようです ....
-
[解決済み] 警告: push.default は設定されていません。その暗黙の値は Git 2.0 で変更されています。
-
git reports an error fatal: unable to auto-detect email address (got 'Administrator@MS-20180504MMDH.(none)')
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] gitにもsvnのような無視コマンドはありますか?
-
[解決済み] GitHubで2つのブランチの差分を取るには?
-
[解決済み] 対話式リベースを中断する方法(--abort が効かない場合)?
-
[解決済み] ファイル変更時のDockerコンテナの再構築