8

git pull --help

リモート リポジトリからの変更を現在のブランチに組み込みます。

コードをオフラインで表示するために git リポジトリをプルし、さまざまなブランチの更新されたコードを取得したいと考えています。各ブランチを手動でプルすることなく、すべてのブランチのコードを簡単にプルするにはどうすればよいですか?

--all -- すべてのリモートを取得します。

-- すべて役に立ちませんでした。

4

6 に答える 6

8

ローカル リポジトリが読み取り専用で使用され、どのファイルも変更されていない場合は、次のスクリプトでうまくいきます。

for i in $(git branch | sed 's/^.//'); do git checkout $i; git pull; done

同じものに相当する git コマンドはないようです。

于 2011-09-27T09:20:41.240 に答える
7

Praveen Sripatiの回答と同様ですが、シェル関数として、開始したブランチに戻ります。

これを ~/.bash_aliases ファイルに入れるだけです:

function pull-all () {
    START=$(git branch | grep '\*' | set 's/^.//');
    for i in $(git branch | sed 's/^.//'); do
        git checkout $i;
        git pull || break;
    done;
    git checkout $START;
};

|| で 衝突などがあっても物事を台無しにすることなく、満足のいく仕事をします。

于 2013-01-19T01:38:27.583 に答える
5

pullリモート ブランチを現在のローカル ブランチにマージするため、すべてのリモート ブランチをプルすることはおそらく望ましくありません。

于 2011-09-27T07:52:55.673 に答える
1

@cellofellow に触発されて、これ.profileMac OS Xに追加しました。

function git-pull-all() {
    START=$(git symbolic-ref --short -q HEAD);
    for branch in $(git branch | sed 's/^.//'); do
        git checkout $branch;
        git pull ${1:-origin} $branch || break;
    done;
    git checkout $START;
};

function git-push-all() {
    git push --all ${1:-origin};
};

主な違いは次のとおりです。

  1. git branch | grep '\*' | set 's/^.//'の代わりに現在のブランチを取得していgit branch | grep '\*' | set 's/^.//'ます。

  2. リモートをパラメーターとして指定できますgit-pull-all origin。パラメータを省略した場合、デフォルトで origin になります。

  3. 複数のブランチをサーバーにプッシュバックするための同様のショートカットも追加されました。

于 2013-07-16T13:33:53.360 に答える
0

各ブランチを個別にマージする必要があります。複数のブランチをマージし、そのうちの 1 つ以上にマージの競合があった場合、どうすれば同時に解決できるでしょうか?

于 2011-09-27T07:55:59.897 に答える