300

git pull(ローカル) クローンから実行され--rebaseたものがデフォルトで使用するように、ホスト Git リポジトリをセットアップする方法はありますか? Stack Overflow で検索して知ったbranch.autosetuprebaseのですが、クローンごとに個別に設定する必要があります。

私のプロジェクト フローは、フィーチャー ブランチを作成する前pullにブランチを作成するように設定されています。これはほぼ常に を使用するため、これがデフォルトになるかどうかを調べています。developmergepull--rebase

4

5 に答える 5

346

デフォルトのプル動作には、3つの異なるレベルの構成があります。最も一般的なものから最も細かいものまで、次のとおりです。

1.1。pull.rebase

これをに設定するtrueと、(明示的にに設定されていない限りgit pull)常にと同等になります。これは、リポジトリごとまたはグローバルに設定することもできます。git pull --rebasebranch.<branchname>.rebasefalse

2.2。branch.autosetuprebase

これをに設定alwaysすると、トラッキングブランチが作成されるたびに、次のような構成エントリが作成されます。よりきめ細かい制御のために、これは、、またはに設定することもできneverlocalリポジトリremoteごとまたはグローバルに設定することもできます。詳細については、を参照git config --helpしてください。

3.3。branch.<branchname>.rebase

これをに設定すると、明示的に使用されてtrueいない限り、その特定のブランチは常にリベースを介してアップストリームからプルされます。git pull --no-rebase

結論

したがって、リポジトリの将来のすべてのクローンのデフォルトの動作を変更することはできませんが、を介して現在のユーザー(既存および将来)のすべてのリポジトリのデフォルトを変更できますgit config --global pull.rebase true

于 2012-12-20T14:45:11.827 に答える
235

どうですか

git config --global pull.rebase true

これにより、常にリベースでプルするように git に指示されます。

于 2013-07-12T16:38:46.913 に答える
62

答えはノーだ。

リモート リポジトリをセットアップして、クローンを作成するすべてのユーザーのデフォルトの動作がgit pull変更されるようにする方法はありません。

ただし、誰もマージコミットをプッシュしないことを確認するサーバー側フックを設定することはできます (おそらく、このようなものです)。

興味のある設定オプションもいくつかあります。リモート リポジトリからクローンを作成するすべての開発者は、自分で手動で設定する必要があります。

1. オプションbranch.<name>.rebase

このように、ブランチ名--rebaseに置き換えて、常に を使用するようにローカル ブランチを構成できます。<name>

git config branch.<name>.rebase true

これを で実行するとmaster、 のmasterセクションは次の.git/configようになります。

[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

2. オプションbranch.autosetuprebase

すべての Git ブランチに対して以前の構成コマンドを実行するのは面倒な場合があるため、Git を構成して、新しいブランチごとに自動的にセットアップすることができます。

git config branch.autosetuprebase always

never( 、remote、およびも指定できます。詳細についてはlocal、を参照man git-configしてください。)

--globalこのオプションを指定しないと、構成は に保存され.git/config、現在のリポジトリのみが影響を受けます。では--global、構成が に保存され~/.gitconfig、構成されていないすべてのリポジトリが影響を受けます。

このオプションは、既存のブランチには影響しません。

3. オプションpull.rebase

git config pull.rebase true

(オプションを指定することもでき--globalます。)

このオプションが true の場合、が に設定されていない限り、runninggit pullは と同等です。git pull --rebasebranch.<name>.rebasefalse

于 2014-10-02T12:53:46.743 に答える
4

これにより、 特定のブランチで--rebaseを発行するときのオプションがデフォルトになります。git pull

@Flimm、true最初のオプションを機能させるために追加する必要がありました。

したがって、正しい構文は次のとおりです。

git config branch.<branch>.rebase true

developブランチでこのコマンドを実行するには:

git config branch.develop.rebase true

developセクションは.git/config次のようになります。

[branch "develop"]
        remote = origin
        merge = refs/heads/develop
        rebase = true
于 2015-04-24T10:31:43.797 に答える
4

現在、リポジトリのデフォルト ポリシーを設定する方法はありません。

自分用に必要で、少なくとも git 1.7.9 を使用している場合は、次のようにpull.rebase構成をグローバルに設定できます。

git config --global pull.rebase true

ただし、各マシンで行う必要があります。1 つのオプションは、そのオプションを使用してデフォルトのユーザー ホーム テンプレート/スケルトンを構成することです。ただし、ユーザーはそのオプションを変更する可能性があります。

マージが必要ない場合は、サーバー側のフックを定義して、マージでプッシュを拒否できます。

参考までに、pull.rebaseのソース ドキュメントは次のとおりです。

true の場合、「git pull」の実行時にデフォルトのリモートからデフォルトのブランチをマージするのではなく、フェッチしたブランチの上にブランチをリベースします。これをブランチごとに設定するには、「branch..rebase」を参照してください。

マージするときは、 --rebase-merges オプションを git rebase に渡して、ローカルのマージ コミットがリベースに含まれるようにします (詳細については、git-rebase を参照してください)。

保存するときは、 --preserve-merges も git rebase に渡して、ローカルでコミットされたマージ コミットが git pull の実行によってフラット化されないようにします。

値がインタラクティブの場合、リベースはインタラクティブ モードで実行されます。

注: これは危険な操作である可能性があります。意味を理解していない限り、使用しないでください (詳細についてはgit-rebaseを参照してください)。

于 2018-12-18T11:49:46.967 に答える