2016-12-15 9 views
0

私の現在のマスタベースのワークフローは、masterのホットフィックスとdevelopブランチの新機能を開発することです。リリースするときは、次のようにします。より簡単なマスタベースのワークフロー

git checkout master && git pull 
git checkout develop && git rebase master 
git checkout master && git merge develop 
git push 

これより少ないコマンドで同じことを実行できますか?可能であれば、複数checkoutを省略したいと思います。

答えて

1

(これはあなたのリモートがorigin命名されていると仮定)

git fetch origin master 
git rebase origin/master develop 
git checkout master && git merge --ff-only develop 
git push 

ノート:

  • git rebase origin/master developgit checkout develop && git rebase master明確にするためマージするときに、このマージは作成されませんので、私は--ff-onlyを使用

  • とまったく同じです任意の新しいコミット、ちょうどブランチポインタを移動します。

いいので、最初の新しいコードはまだ4行ですが、チェックアウトは1回だけ表示されます。 this questionのアイデアを使用してチェックアウトを少し減らすことができますが、無視します。

あなたはさらに感嘆符(!)との別名を開始することで、複数のコマンド(as seen here)とGitの別名を作成することによって、(しかし、gitのない実行時間)あなたのtypeingを減らすことができます。

あなたがそうのようなエイリアスを作成することができます。git pushDevelop

git config --global alias.pushDevelop '!git fetch origin/master; git rebase origin/master develop; git checkout master; git merge --ff-only develop; git push' 

あなたがそのように次のようなコマンドを使用します。

またgit branch -f masterと三行目を交換し、develop枝にmasterブランチを再作成するが、それは情報の追跡が失われる可能性があります可能性があります。 (このコマンドは、ブランチmasterの作成を強制します。-fは、同じ名前のブランチを2つ持つことができないため、必要です。

関連する問題