1

リモートマスターで更新し続けようとしているフィーチャーブランチがあります。また、ローカル マスターも最新の状態に保ちたいと考えています。私はマスターに取り組んでいませんが、それを更新し続けるのは良いことです.

これが私のワークフローです

(feature_branch)> git checkout master
(master)> git pull --rebase
(master)> git checkout feature_branch
(feature_branch)> git rebase master

より少ないコマンドでそれを行うことはできますか?

4

3 に答える 3

2

Nathan が提案したように、Git エイリアスを作成して一連のコマンドを 1 つにまとめることができます。

$ git config --global alias.sync \
"!git fetch <remote> master:master && git rebase master"

# With the feature branch checked out
$ git sync

これにより、早送りのみのマージを使用して、最初にリモートからsyncローカルを更新するエイリアスが設定されます。次に、ローカルの上に現在のブランチをリベースします(それが であることを確認してください) 。mastermasterfeature_branchmaster

を使用する利点は、リモート リポジトリから更新する前にブランチgit fetch master:masterをチェックアウトする必要がないことです。masterこれは、Git fetch docsで構文がどのように機能するかを説明する方法です。

パラメータの形式<refspec>は、オプションのプラス+、その後にソース ref <src>、コロン:、宛先 ref が続きます<dst>

一致するリモート ref<src>がフェッチされ、<dst>が空の文字列でない場合は、一致するローカル ref が を使用して早送りされ<src>ます。オプションのプラス+を使用すると、早送り更新にならなくても、ローカル ref が更新されます。

したがって、私が与える例では、リモートリポジトリから asgit fetch master:masterを取得するように指示されており、空ではないため (右側の localです)、Git は を使用して早送りマージを試みます。master<src><dst>master<dst><src>

于 2013-07-13T06:01:54.893 に答える
1

master が origin/master より進んでいない場合は、1 つ少ないコマンドで実行できますが、確かに少しハックです:

git fetch
git push . origin/master:master
git rebase master

あなたのマスターがオリジン/マスターよりも進んでいる場合、あなたがしていることよりも速い方法はわかりません。もちろん、エイリアスやシェル関数を作成することもできます。

編集:カップケーキの答えは間違いなく最良の解決策であり、フェッチのrefspecがffマージを開始することがわかりました!

于 2013-07-12T21:50:33.050 に答える