用于拉取所有远程分支的 Git 别名

问题描述 投票:0回答:1

我正在尝试创建一个 git 别名来基于这个答案

拉取远程分支
git branch -r \
  | grep -v '\->' \
  | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" \
  | while read remote; do \
      git branch --track "${remote#origin/}" "$remote"; \
    done
git fetch --all
git pull --all

我正在尝试为此创建一个别名:

git config --global alias.pull-all '!'"f() { git branch -r | grep -v -- '->' | sed \"s,\x1B\[[0-9;]*[a-zA-Z],,g\" | while read b; do git branch --track \"\${b##origin/}\" \"\$b\"; done; git pull --all }; f" 

但是当我使用别名时,我收到 shell (zsh) 语法错误“意外的文件结尾”:

$ git pull-all
f() { git branch -r | grep -v -- '->' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read b; do git branch --track "${b##origin/}" "$b"; done; git pull --all }; f: -c: line 1: syntax error: unexpected end of file

但是将错误消息复制粘贴到我的命令行中效果很好:

$ f() { git branch -r | grep -v -- '->' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read b; do git branch --track "${b##origin/}" "$b"; done; git pull --all }; f
branch 'a-branch' set up to track 'origin/a-branch'.
fatal: a branch named 'main' already exists
Already up to date.

如何修复别名,以便拉取所有远程分支,就像我手动输入命令时一样?

git shell terminal zsh
1个回答
0
投票

结果函数在右大括号之前需要分号或换行符。

git config --global alias.pull-all '!'"f() { git branch -r | grep -v -- '->' | sed \"s,\x1B\[[0-9;]*[a-zA-Z],,g\" | while read b; do git branch --track \"\${b##origin/}\" \"\$b\"; done; git pull --all; }; f" 
© www.soinside.com 2019 - 2024. All rights reserved.