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