繁体   English   中英

从git存储库中提取所有未经修改的更改

[英]Pull all unfetched changes from git repository

我需要从几个不同的,不同的存储库(所有远程分支以及对这些分支的所有更改)中获取所有内容。 我试过git pull --all但是出于某种原因,我收到以下消息:

There are no candidates for merging among the refs that you just fetched.
Generally this means that you provided a wildcard refspec which had no
matches on the remote end.

那么我将如何确保从存储库中获取所有更改(如果可能的话,不知道另一端的分支是什么)?

所有帮助表示赞赏,并提前致谢!

一般来说 - 这是一个非常非常糟糕的主意。 不要那样做。 “所有远程分支”通常包括正在进行中的代码,废弃的代码,相同功能的冲突实现等。尝试将它们全部合并到本地树中是一种灾难。

现在,如果你真的想做你建议的非常愚蠢的事情,你可以这样做:

git fetch remote_source
git merge $(git branch -r | grep remote_source)

现在,如果您真正想做的就是拥有所有远程更改的本地副本 ,而不尝试将它们合并到您的树中,那么您根本不需要进行拉取或合并; git fetch remote_source为你做的一切。 当然,它不会创建映射到遥控器的本地分支 - 但它会拉下远程分支,您可以根据需要随时创建本地分支,而无需与远程源进行进一步通信。


考虑到评论中的进一步问题描述,听起来你真正想要的是将所有分支从旧遥控器推送到新的遥控器, 而不是将它们合并到一个树中。 要做到这一点,您可能需要以下内容:

args=()
for remote_branch in $(git branch -r | grep OLD_REMOTE/); do
  branch_name=${remote_branch#*/}
  args+=( "${remote_branch}:${branch_name}" )
done
git push NEW_REMOTE "${args[@]}"

这似乎是一个非常糟糕的主意。 但我猜你知道你在做什么。

我使用下面的bash one liner虽然要推送到所有的遥控器,我已经修改过来做拉动。

for i in $(git remote); do git pull $i master; done;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM