1. ホーム
  2. git

[解決済み] 分散型ワークフローのためのgitの "simple "と "current "push.defaultの比較

2022-06-20 15:23:17

質問

機能的に言えば、分散型ワークフローにおいて、私は次のような違いがあるとは思えません。 simplecurrent のオプションは push.default のコンフィグ設定です。

current は、現在のブランチを指定されたリモートの同じ名前のブランチにプッシュします。 simple は、現在のブランチに対して追跡されているリモートと追跡されていないリモートの両方に対して、同じことを効果的に行います (どちらの場合も、同じブランチ名を強制的に使用します)。

私が見逃している分散型ワークフローのためのこの 2 つの重要な違いについて、どなたか説明していただけませんか?

どのように解決するのですか?

違いは simple , git push (は、現在のブランチがリモートの上流ブランチを追跡していない場合(リモートに同じ名前のブランチが存在する場合でも)、(参照仕様を渡さずに)失敗します。

$ git checkout -b foo
Switched to a new branch 'foo'

$ git config push.default simple
$ git push
fatal: The current branch foo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin foo

一方 current は現在のブランチが上流を追跡しているかどうかを気にせず、ただ同じ名前を持つブランチにプッシュしたいだけです。

$ git config push.default current
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To /Documents/GitHub/bare
 * [new branch]      foo-> foo

ドキュメンテーション

からの Git 設定ドキュメント :

  • upstream - 現在のブランチをその上流ブランチにプッシュする...

  • simple - のように、上流ブランチの名前がローカルブランチと異なる場合、プッシュを拒否します...。

  • current - 現在のブランチを同名のブランチにプッシュします。