Git fetch 修剪失败的远程服务器

Git fetch 修剪失败的远程服务器

我的雇主有一个设置 git 存储库的脚本,但这样做会添加许多不再存在的远程存储库。我想编写一行代码来修剪这些远程存储库。

看起来 的输出git fetch --all确实包含可匹配的Could not fetch <remote>行,但是当我grep执行 时,它会匹配整个消息,而不仅仅是该行。我也尝试过sedawk,但无济于事。

有没有简单的方法可以做到这一点?

示例输出来自git fetch --all

Fetching <remote>
fatal: '/path/to/remote' does not appear to be a git repository
fatal: Could not read from remote repository.  

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch <remote>

答案1

grep不匹配整个消息。我怀疑您尝试使用 管道连接 grep | grep。但是,此输出是一条错误消息,输出到 stderr,并且通过使用 运算|符,您仅在 stdout 上应用了 grep。您可以同时使用|&stdoutgrep和 stderr。然后,您可以使用另一个管道来 cut提取有问题的存储库。例如:

mureinik@computer ~/src/git/remotesample (main)
$ git remote -v
remote1 http://example.com/notaremote (fetch)
remote1 http://example.com/notaremote (push)
remote2 http://example.com/alsonotaremote (fetch)
remote2 http://example.com/alsonotaremote (push)

mureinik@computer ~/src/git/remotesample (main)
$ git fetch --all |& grep '^error: Could not fetch'
error: Could not fetch remote1
error: Could not fetch remote2

mureinik@computer ~/src/git/remotesample (main)
$ git fetch --all |& grep '^error: Could not fetch' | cut -d' ' -f5
remote1
remote2

相关内容