git 如何将所有远程分支拉为本地分支[复制]

6jjcrrmo  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(139)

此问题在此处已有答案

Track all remote git branches as local branches(16个答案)
How do I clone all remote branches?(46个答案)
How do I fetch all Git branches?(37个答案)
14天前关闭。
我已将远程存储库克隆到本地计算机。

git clone https://my_name/repo/project.git

现在本地回购有1个主分支,而远程回购有10-15个分行。

git branch -a

*master
*remotes/origin/another-branch
*remotes/origin/another-branch
*remotes/origin/another-branch
*remotes/origin/another-branch

我想拉所有远程分支作为本地分支在一个命令。我发现类似的答案拉远程分支作为本地分支,但它只为1个分支,而不是所有分支。

git checkout -b fix-failing-tests origin/fix-failing-tests

我怎样才能把所有的远程分支作为lcoal分支,用更少的重复命令行甚至跟踪它们呢?谢谢。

ryhaxcpt

ryhaxcpt1#

克隆确实会创建除远程的“默认分支”之外的任何本地分支。如果你想要其他本地分支,你必须创建它们。您需要创建与 * 每个远程分支相对应的本地分支,依次,一次一个。* 没有其他方法。
如果您不想 * 自己 * 手动为所有远程跟踪分支逐个执行此操作,您可以编写 * 脚本 * 为所有远程跟踪分支逐个执行此操作。但是无论如何,您必须为所有删除跟踪分支逐个执行此操作。
例如,请参见https://gist.github.com/wilmarvh/95fe7daed6ee6a63d811677e040ae421处的脚本。如果链接失败,则使用以下脚本(bash或zsh):

for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

(Or用您熟悉的任何编程语言编写类似的脚本。)
我应该补充一点,在我看来,这是一件非常愚蠢的事情。创建一个你不需要的地方分支没有任何好处;这只会增加将来的开销,因为每个本地分支都必须跟上它的远程跟踪分支。我的建议是放弃这种愿望,只在绝对需要的时候创建一个本地分支。(在我的编程生涯中,我 * 从不 * 从远程跟踪分支创建本地分支。如果我想查看远程跟踪分支中的内容,我只是简单地检查了远程跟踪分支,分离。)

相关问题