当前位置:   article > 正文

Git&repo操作技巧_git rev-list --objects --all

git rev-list --objects --all

1.查找仓库中的大文件

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}')"

2.改写历史,去除大文件

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

3.查找两个分支的分叉点:

git merge-base branch1 branch2

4.查找某个commit id所在分支:

git branch -a --contains $commitid

可以有多个:

第二种方式:

git name-rev 632116837dd4fb8cfbe41abf576e303c199e8a29

回退repo仓库到某个时间点:

repo forall -c 'commitID=`git log --before "2017-03-17 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'
  1. forall  操作分支中的所有仓库
  2. -c  只操作当前分支
  3. --before  早于指定时间点的提交记录
  4. -1  只显示最近的1条记录(注意这是数字 1 ,如果要显示 2 条就写 2,以此类推)
  5. "2017-03-17 07:00"  希望回退到的日期(时间点)
  6. --pretty  以指定格式显示提交记录
  7. %H  提交记录的hash值,即commit id(其它格式及更详细的信息可以使用命令git log --help打印帮助信息并查看“PRETTY FORMATS”小节)

命令含义:
这条repo命令的实质就是在当前分支的每个仓库下执行git log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行git reset --hard操作。就这么简单。

如果节省仓库空间:

如下命令可以只下载最近的一份提交记录,而不会管之前的提交记录,这样可以有效减少仓库数据占用的空间大小,可以看到只有一条提交记录,符合我们的预期。

 git clone https://gitee.com/rtthread/rt-thread.git --depth=1

git clone 另外一个目录的仓库

git clone后面可以跟文件系统中的版本库路径,或者NFS挂载到本地的虚拟文件系统,GIT访问协议URL,SSH,HTTP/HTTPS等URI定位仓库等。

  1. git clone /home/caozilong/Workspace/linux/linux-5.18.19
  2. or
  3. git clone /home/caozilong/Workspace/linux/linux-5.18.19/.git

删除历史记录:

  1. $ git filter-branch --tree-filter 'rm README.md'
  2. $ git push origin master --force

列出某个用户创建的所有分支

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | grep caozilong


结束!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/601470
推荐阅读
相关标签
  

闽ICP备14008679号