【问题标题】:How to 'git pull' all the branches easily?如何轻松“git pull”所有分支?
【发布时间】:2011-11-25 19:35:33
【问题描述】:

git pull --help

将来自远程存储库的更改合并到当前分支中。

我拉取 git 存储库以离线查看代码,并希望获得不同分支的更新代码。如何在不手动拉取每个分支的情况下轻松拉取所有分支的代码?

--all -- 获取所有遥控器。

--都没有帮助。

【问题讨论】:

标签: synchronization branch git-pull


【解决方案1】:

如果您只需要离线功能,您可以简单地拨打git fetch -all 以获取所有当前信息。现在您的磁盘上拥有所有信息,并且可以脱机工作。简单合并或签出您要处理的分支。 git pull 是git fetch && git merge

【讨论】:

    【解决方案2】:

    受@cellofellow 的启发,我在 Mac OS X 上将this 添加到了我的.profile

    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。如果省略该参数,则默认为原点。

    3. 还添加了一个类似的快捷方式来将多个分支推回服务器。

    【讨论】:

    • 干得好。我喜欢更改要使用的遥控器的选项。
    【解决方案3】:

    如果本地存储库用于只读并且没有文件被修改,那么下面的脚本就可以解决问题。

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

    似乎没有相同的 git 等效命令。

    【讨论】:

      【解决方案4】:

      就像 Praveen Sripati 的回答,但作为一个 shell 函数,它会将您带回您开始的分支。

      只需将其放入您的 ~/.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;
      };
      

      随着 ||如果发生冲突或类似情况,break it 可以很好地解决问题。

      【讨论】:

        【解决方案5】:

        您必须单独合并每个分支。如果您在多个分支中合并,并且其中多个分支存在合并冲突,您怎么可能同时解决呢?

        【讨论】:

        • Gareth - 正如我提到的,我只使用 git 进行离线查看,不会有任何冲突。一个 git 命令或 shell 脚本可能满足我的要求。
        【解决方案6】:

        pull 将远程分支合并到您当前的本地分支中,因此拉取所有远程分支可能不是您想要的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-01
          • 2017-05-28
          • 2012-12-03
          • 2011-07-27
          • 2011-08-09
          • 2011-02-05
          • 2013-09-30
          • 2013-12-04
          相关资源
          最近更新 更多