git pull --help
将来自远程存储库的更改合并到当前分支中。
我拉git存储库以获取代码的离线视图,并希望获得不同分支的更新代码。如何在不手动拉动每个分支的情况下轻松拉取所有分支的代码?
- all - 获取所有遥控器。
- 一切都没有帮助。
答案 0 :(得分:8)
如果本地存储库用于只读且没有任何文件被修改,那么下面的脚本就可以了。
for i in $(git branch | sed 's/^.//'); do git checkout $i; git pull; done
似乎没有相同的git等效命令。
答案 1 :(得分:7)
像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;
};
使用||如果发生冲突之类的话,打破它会做出令人满意的工作。
答案 2 :(得分:5)
pull
将远程分支合并到当前的本地分支中,因此拉动所有远程分支可能不是您想要的。
答案 3 :(得分:1)
受@cellofellow的启发我在Mac OS X上向.profile
添加了this:
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};
};
主要区别是:
我使用git branch | grep '\*' | set 's/^.//'
代替git branch | grep '\*' | set 's/^.//'
获取当前分支。
您可以提供遥控器作为参数,例如git-pull-all origin
。如果省略该参数,则默认为origin。
还添加了一个类似的快捷方式,将多个分支推回服务器。
答案 4 :(得分:1)
如果您只需要离线功能,则可以简单地致电git fetch -all
以获取所有当前信息。现在,您可以在磁盘上获得所有信息,并且可以脱机工作。简单合并或签出您要处理的分支。 Git pull是git fetch && git merge
。
答案 5 :(得分:0)
您必须单独合并每个分支。如果你合并了多个分支并且其中一个分支有合并冲突,你怎么可能同时解决呢?