2017-11-14 22 views
1

すべてのローカルブランチをすべてのリモートブランチで上書きする方法を教えてください。ここですべてのローカルブランチをすべてのリモートブランチで更新する

は私の地元の支店です:

client-side-js-framework 
client-side-js-framework-2 
client-side-js-framework-3 
handlebars 
master 

そして、私のリモートブランチ:

client-side-js-framework 
handlebars 
master 
no-network-connection 

私は私のリモートブランチは、より最新であるとして、私の地元の枝が私のリモートブランチをミラーリングします。言い換えれば、私の地元支部は次のようになります。

client-side-js-framework 
handlebars 
master 
no-network-connection 

これは、1つ(または2)コマンドで行うのではなく、基本的には私の地元のレポを削除し、それをクローニングし、再できますか?

答えて

3

ほとんどの場合、あなたが実行する必要があります:

git fetch origin 

、その後、単には(ほとんどまたはすべての)ローカルのブランチをを削除します。あなたが実行して次の時間、例えば:

git checkout handlebars 

それを見つけることができない、あなたのローカル名handlebarsを検索しますあなたのGitは、その上origin/handlebarsupstream/handlebarsなど正確に一つの名前がありますかどうかを確認するためにいくつかのより多くの検索(1用それぞれの可能なリモート)。

限り正確そのような名前がありますように、あなたのGitはその後、言うだろう:アハを、私は同じを使用してローカル名handlebarsを作成する必要があり、リモート追跡名origin/handlebarsとしてをコミットします。その瞬間にhandlebarsというローカルブランチがorigin/handlebarsと一致すると、Gitはそれをチェックして作業を開始します。 a set of balls-and-chainsのように、働いていない半数のローカルの名前をドラッグする必要はありません。

本当に各ブランチを更新する必要がある場合は、ブランチごとに1つの更新コマンドを使用して適切なマージとプッシュを行うループを使用する必要があります。ただし、その場合には:

git fetch origin 'refs/heads/*:refs/heads/*' 

は動作し-ますがはそれが(ボールチェーンリンクを参照)を行いません。あなたがを行うこの場合、git checkout --track origin/handlebarsは、所望の結果を達成するのと同じ名前を使用する複数のリモコンを持っている。

(それは少しトリッキーです。一方で、それはgit fetchローカル名を削除できるように、またトリッキーな、と賢明ですしかし、私はそれが--pruneとすることができると思う。)

+0

[皮肉たっぷり]です

1. git checkout client-side-js-framework 2. git pull 

です。私はそれがイメージであることを認識していませんでした。よくやった。私は地元のレポを削除してクローニングをやり直しましたが、私はあなたの答えが好きで、次回の代わりにこれをやろうとします。 – Farid

1

基本的にgit fetch originはあなたの地方のブランチを更新するだけでなく、リモートで利用可能なあなたの地元のレポに余分なブランチを追加します。

代替ソリューションは、「ボール・アンド・チェインのセット」という名前の私は実際にそれがドキュメントへのリンクだと思ったすべて:)

関連する問題