1

私が電話するgit remote show <remote_name>と、以下が表示されます

  Local branches configured for 'git pull':
    master           merges with remote master
  Local refs configured for 'git push':
    master           pushes to master           (up to date)

構成されたプッシュを除外するにはどうすればよいですか? したがってgit push、マスターブランチからはエラーがスローされ、プッシュのみが明示的なリモート名になりますgit push <remote_name> <remote_branch_name>

4

3 に答える 3

2

gitconfig を に変更する場合はpush.default、すべてのブランチで毎回andnothingを指定する必要があります。<remote_name><remote_branch_name>

git config --global push.default nothing(プロジェクト固有の構成では --global を削除します)

これを設定した後、git push すると次のようなエラーが発生するはずです。

致命的: プッシュする refspec を指定していません。push.default は「何もありません」です。

アップデート:

特定のブランチの自動プッシュを無効にしたいだけなら、追跡設定を削除するだけです。

1 つの方法は、プロジェクトを編集して構成.git/configを削除すること[branch="branchname"]です。

またはプログラムで:ブランチの構成の一部git config --unset branch.branchname.remoteを削除します。remote=remotename

于 2013-04-07T10:54:31.123 に答える
1

pushリモート構成の構成がないことを確認してください。

git config --unset remote.<remote_name>.push

push.defaultに構成nothing:

git config push.default nothing

残念ながら、設定git remote show <remote_name>を考慮していないように見えるためconfig.push(常に「一致」を前提としています)、Local refs configured for 'git push'引き続き出力にリストされます。

于 2013-04-07T10:55:03.690 に答える
1

何が必要かは完全には明らかではありませんが、ベアをすべて無効にしたい場合はgit push、次のことができます。

git config --local push.default nothing

これは、baregit pushがデフォルトの refspec を想定していないことを意味し、それを指定する必要があります。他に考えられる唯一のことは、エイリアスを作成し、それをプッシュに使用することです。したがって、あなたの次のようなもの.gitconfig

[aliases]
p = "!_() { cur=$(git symbolic-ref HEAD); if test \"$cur\" = refs/heads/master -a -z \"$1\"; then { echo \"please specify push target\"; exit 1; } ; fi; git push \"$@\" ; }; _"

次にgit p、マスターのときにコマンドラインで他のコマンドラインパラメーターが指定されていない場合、プッシュを拒否します。それ以外の場合は、プッシュのデフォルトが使用されます。

現時点で git から実現できる柔軟性はこれだけだと思います。さらに何かが必要な場合は、おそらく git リストでそれについて話すことで、誰かがあなたのために機能を実装するよう説得するかもしれません. ただし、説得力のあるユースケースが必要です。

于 2013-04-07T10:58:08.423 に答える