git拉取远程所有分支代码到本地

2022-03-17  本文已影响0人  炫子_260f
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

转自
git拉取远程所有分支代码到本地

为指定仓库设置多个远程地址

git remote set-url --add <name> <url>

示例

  1. origin 添加一个链接 git remote set-url --add origin https://github.com/tingtingtina/xxx.git
  2. 这时通过git remote -v查看信息origin 这个仓库下就有配有多个地址了,当 git push 的时候(默认是 origin,也可指定<name>)这个名下所有的远程仓库都会被更新。
$ git remote -v
origin  http://git.xxx (fetch)
origin  http://git.xxx (push)
origin  https://github.com/tingtingtina/xxx.git (push)

改写历史,去除大文件

查看存储中的大文件

git rev-list --objects --all | grep -E `git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}' | sed ':a;N;$!ba;s/\n/|/g'`

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk '{print$1}')"

eg

git rev-list --objects --all | grep e9e4f5bee25e0f3323f8d4a83505c25293018ad1

注意:下方命令中的 path/to/large/files 是大文件所在的路径,千万不要弄错!

git filter-branch --tree-filter 'rm -f path/to/large/files' --tag-name-filter cat -- --all
git push origin --tags --force
git push origin --all --force

出现异常

WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

解决方法:
您已经执行了筛选分支操作。在过滤分支之后,Git保留对旧提交的引用,以防出现问题。

你可以在.git/refs/original/…中找到。或者删除该目录和其中的所有文件,或者使用-f标志强制git删除旧的引用。

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
上一篇下一篇

猜你喜欢

热点阅读