次のコマンドを使って自分のリモートブランチにプッシュします。
git Push Origin sandbox
私が言うなら
git Push Origin
そのプッシュは他のブランチでも変更されますか、それとも現在のブランチのみを更新しますか? master
、production
、sandbox
の3つのブランチがあります。
git Push
のドキュメントはこれについて非常に明確ではありませんので、私は良いのためにこれを明確にしたいと思います。
次git Push
のコマンドが正確に更新されますどの枝やリモコン?
git Push
git Push Origin
上記のOrigin
はリモートです。
私はgit Push [remote] [branch]
がリモートにのみそのブランチをプッシュすることを理解しています。
Git設定でPush.defaultを設定することでデフォルトの振る舞いを制御できます。 からgit-config(1)ドキュメント :
Push.default
コマンドラインでrefspecが指定されていない場合、リモートでrefspecが設定されていない場合、およびコマンドラインで指定されたオプションによってrefspecが指定されていない場合にgit Pushが実行するアクションを定義します。可能な値は次のとおりです。
nothing
:何もプッシュしない
matching
:全てのマッチするブランチをプッシュする
両端で同じ名前を持つすべてのブランチは、一致していると見なされます。
これは以前はデフォルトでしたが、Git 2.0以降ではありません(simple
が新しいデフォルトです)。
upstream
:現在のブランチを上流のブランチにプッシュする(tracking
はアップストリームの非推奨同義語です)
current
:現在のブランチを同じ名前のブランチにプッシュする
simple
:(Git 1.7.11の新機能)upstreamと似ていますが、上流のブランチの名前がローカルのものと異なる場合はPushを拒否します
これは最も安全なオプションであり、初心者に最適です。
このモードはGit 2.0ではデフォルトになりました。
シンプルモード、現在モード、アップストリームモードは、他のブランチがまだプッシュアウトする準備ができていない場合でも、作業終了後に1つのブランチをプッシュアウトしたい人のためのものです。
コマンドラインの例:
現在の設定を表示するには
git config --global Push.default
新しい構成を設定するには
git config --global Push.default current
Push.defaultを使ってgitのデフォルトの振る舞いを設定できます。
git config Push.default current
あるいは、たくさんのリポジトリがあり、そのすべてを同じものにしたい場合
git config --global Push.default current
この設定のcurrentは、デフォルトではgit Pushを実行したときに現在のブランチのみプッシュになることを意味します。
他のオプションは以下のとおりです。
更新 - これを行うための新しい方法
Git 1.7.11以降では、次のようにします。
git config --global Push.default simple
これはcurrentと同じように動作する新しい設定で、v 2.0からgitにデフォルト設定されます。
git Push Origin
は一致するリモートブランチを持つローカルブランチへのすべての変更をOrigin
にプッシュしますgit Push
は
git Push <remote>
のように動作します。ここで<remote>
は現在のブランチのリモートです(現在のブランチにリモートが設定されていない場合はOriginです)。
私は自分のコードをブランチにコミットしてgithubにプッシュしました。
git branch SimonLowMemoryExperiments
git checkout SimonLowMemoryExperiments
git add .
git commit -a -m "Lots of experimentation with identifying the memory problems"
git Push Origin SimonLowMemoryExperiments
以下は、Git Pushに関する非常に便利で役立つ情報です: Git Push:Just the Tip
Git Pushの最も一般的な使用法は、ローカルの変更をパブリックなアップストリームリポジトリにプッシュすることです。アップストリームが「Origin」という名前のリモート(リポジトリがクローンの場合のデフォルトのリモート名)であり、更新されるブランチの名前が「master」(デフォルトのブランチ名)であると仮定すると、git Push Origin master
git Push Origin
は、すべてのローカルブランチからの変更を、Originリモートの一致するブランチにプッシュします。
git Push Origin master
は、ローカルマスターブランチからリモートマスターブランチに変更をプッシュします。
git Push Origin master:staging
は、ローカルマスターブランチからリモートステージングブランチに変更が存在する場合、それをプッシュします。
(2012年3月)
注意:デフォルトの "matching
"ポリシーは近日中に変更される可能性があります
(時々git1.7.10 +の後に) :
「 説明してください:何をプッシュするのか言わないときに「git Push」はどうすべきですか? 」
現在の設定 (すなわち
Push.default=matching
)では、引数なしでgit Push
は同じ名前でローカルとリモートに存在するすべてのブランチをプッシュします 。
これは通常、開発者が自分の公開リポジトリにプッシュするときに適していますが、共有リポジトリを使用するときに危険ではないにしても混乱を招く可能性があります。提案は、 デフォルトを '
upstream
' に変更することです。すなわち、現在のブランチだけをプッシュし、それをブランチgit pullからプルします。
他の候補は 'current
'です。これは現在のブランチだけを同じ名前のリモートブランチにプッシュします。これまで議論されてきたことは、このスレッドで見ることができます。
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
これまでに関連した議論は次のとおりです。
ディスカッションに参加するには、メッセージを[email protected]に送ってください。
私はちょうどこれを私の.gitconfig aliasesセクションに入れて、それがどのように機能するかが好きです:
pub = "!f() { git Push -u ${1:-Origin} `git symbolic-ref HEAD`; }; f"
現在のブランチをgit pub
で、または別のレポジトリでgit pub repo-name
でOriginにプッシュします。おいしい。
Git Pushはすべてのローカルブランチをリモートサーバーにプッシュしようとしますが、これはおそらくあなたが望まないことです。これに対処するためにいくつかの便利な設定があります。
エイリアス "gpull"と "gpush"は適切に
私の〜/ .bash_profileに
get_git_branch() {
echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull Origin `get_git_branch`'
alias gpush='git Push Origin `get_git_branch`'
したがって、 "gpush"または "gpull"を実行すると、 "現在オン"のブランチだけがプッシュされます。
.gitconfig
でデフォルトの動作を変更することができます。例えば:
[Push]
default = current
現在の設定を確認するには、次のコマンドを実行してください。
git config --global --get Push.default
エイリアスを使用するよりも、私はgit-XXXスクリプトを作成して、それらをより簡単にソース管理できるようにすることを好みます(私たちの開発者は皆、この種のもののために特定のソース管理ディレクトリを持っています)。
このスクリプト(git-setpush
と呼ばれる)はremote.Origin.Push
値の設定値を現在のブランチだけをプッシュするものに設定します。
#!/bin/bash -eu
CURRENT_BRANCH=$(git branch | grep '^\*' | cut -d" " -f2)
NEW_Push_REF=HEAD:refs/for/$CURRENT_BRANCH
echo "setting remote.Origin.Push to $NEW_Push_REF"
git config remote.Origin.Push $NEW_Push_REF
Gerrit
を使っているので、レビューブランチにプッシュするためにターゲットをrefs/for/XXX
に設定します。また、Originがあなたのリモートネームであると仮定します。
でブランチをチェックアウトした後にそれを呼び出す
git checkout your-branch
git setpush
それは明らかにチェックアウトもするために適応させることができます、しかし私はスクリプトを好きです 1つのことをして、それをうまくやる
これらの作業を自動化するために、.bashrcファイルに次の関数を追加しました。現在のブランチのgit Push/git pull + nameを行います。
function gpush()
{
if [[ "x$1" == "x-h" ]]; then
cat <<EOF
Usage: gpush
git: for current branch: Push changes to remote branch;
EOF
else
set -x
local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"`
git Push ${bname}
set +x
fi
}
function gpull()
{
if [[ "x$1" == "x-h" ]]; then
cat <<EOF
Usage: gpull
git: for current branch: pull changes from
EOF
else
set -x
local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"`
git pull ${bname}
set +x
fi
}