リモート上のブランチコピーをローカルからコマンドだけで行いたい


いつも release ブランチを切る時  
bitbucket 上で master から release/xxxxxx をUI上で作ってるんですが  
ローカルから git コマンドで簡単にやる方法ってないでしょうか

ローカルのブランチのどの状態にあっても  
リモートの master の状態から release をきって  
ローカルは元の作業状態に戻りたいです

[code]

    #!/bin/bash
    CURRENT=`git branch --show`
    git stash
    git checkout master
    git pull
    RELEASE=release/`date "+%Y%m%d-%H%M%S"`
    git branch $RELEASE
    git checkout $RELEASE
    git push --set-upstream origin $RELEASE
    git checkout $CURRENT
    git stash pop
    
[/code]

こんな感じでやろうとしたんですがローカルの作業状態によって stash や checkout が失敗します

プッシュコマンドだけでブランチ移動せずに  
git push origin/master => origin/release/xxxxxx にコピーするようなことってできませんか？




自分はこんな感じの alias 組んでます

[code]

    alias release='export BRANCH=release/`date +%Y.%m.%d.%H%M`; git pull; git branch $BRANCH master; git push --setupstream origin $BRANCH'
    
[/code]

最初に全部 pull してますが master だけでよければ  
git pull origin master:master  
とかにかえてもいいのかも

`git branch <作成するブランチ> (<元ブランチ>)`  
で省略するとカレントブランチが使われるだけなので元ブランチを指定すれば checkout せずにコピーというかブランチできます

\--copy フラグは知らなかったんですが調べてみると設定（リモートプッシュ先とか？）までコピーするみたいなのでこの場合つけないほうがいいかも

master から --copy で作ったブランチは --setupstream をつけわすれて push するとおそらくリモートの master
にプッシュすることになりそうなので危険です（試してないですが）

push も同じく  
`git push (<プッシュするブランチ>)`  
で省略するとカレントブランチを push するだけなので  
ブランチを指定すれば checkout せずに push できます

初回（--copy を指定しなければ）追跡ブランチがセットされてなくて  
\--setupstream してくれって警告が出ると思うのでしてあげるだけです  
\--setupstream origin とかけば暗黙で origin/<同じ名前> にプッシュしてくれます




自分はこんな感じの alias 組んでます

[code]

    alias release='export BRANCH=release/`date +%Y.%m.%d.%H%M`; git pull; git branch $BRANCH master; git push --setupstream origin $BRANCH'
    
[/code]

最初に全部 pull してますが master だけでよければ  
git pull origin master:master  
とかにかえてもいいのかも

`git branch <作成するブランチ> (<元ブランチ>)`  
で省略するとカレントブランチが使われるだけなので元ブランチを指定すれば checkout せずにコピーというかブランチできます

\--copy フラグは知らなかったんですが調べてみると設定（リモートプッシュ先とか？）までコピーするみたいなのでこの場合つけないほうがいいかも

master から --copy で作ったブランチは --setupstream をつけわすれて push するとおそらくリモートの master
にプッシュすることになりそうなので危険です（試してないですが）

push も同じく  
`git push (<プッシュするブランチ>)`  
で省略するとカレントブランチを push するだけなので  
ブランチを指定すれば checkout せずに push できます

初回（--copy を指定しなければ）追跡ブランチがセットされてなくて  
\--setupstream してくれって警告が出ると思うのでしてあげるだけです  
\--setupstream origin とかけば暗黙で origin/<同じ名前> にプッシュしてくれます

