Git

GitbookKb2021-01-11


📑 git capacity


when speed/dowload issue, do the following:

$ git count-objects -vH

will return:

count: 262
size: 234.23 KiB
in-pack: 4687
packs: 1
size-pack: 373.69 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

if size-pack too large, do the following:

$ git filter-branch --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch doc/系统参考截图'   --tag-name-filter cat -- --all
// $ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch doc/系统参考截图" HEAD

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch ./doc/' --tag-name-filter cat -- --all
$ rm -rf .git/refs/original/

$ rm -rf .git/refs/original/
$ git reflog expire --all
$ git gc --aggressive --prune
$ git push origin master --force
$ git push origin --force --all

check by:

$ du -sh .git/objects/
$ git count-objects -vH

执行上述步骤后,.git/objects/从 1G 减少到 370M,继续:

$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

$ git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007

>
  ee8acebd3177771690910fc94df619225dba6e99 client/yarn.lock
  fcb6f5c7b70992963f74a0d0321f43f0a18734cb server/data/sample_data_olympic_winners.sql
  fd8e2678673c06c1b255cda5260a123c244be822 client/package-lock.json
  786ca706b8b52cee2b92350026b8e0457333ab75 doc/融单系统操作管理说明0805.docx
  9e1db0df8948eccd699fc654fa4a6c0f489d2217 kb/imgs/bffe.png


$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch server/data/sample_data_olympic_winners.sql'
$ rm -rf .git/refs/original/
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc/融单系统操作管理说明0805.docx'
$ rm -rf .git/refs/original/
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch kb/imgs/bffe.png'
$ rm -rf .git/refs/original/
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch client/package-lock.json'
$ rm -rf .git/refs/original/


$ git reflog expire --expire=now --all
$ git fsck --full --unreachable
$ git repack -A -d
$ git gc --aggressive --prune=now
$ git push --force origin master
$ git push origin --force --all


$ git count-objects -vH
	count: 769
	size: 416.16 MiB
	in-pack: 5418
	packs: 1
	size-pack: 6.46 MiB

现在的大小是 6M (本机)!4.49M (服务器)

我们的开发使用 Git + Bitbucket

开发时不要直接操作master分支。

通常在自己分支下开发:

git checkout -b 开发分支
git add .
git commit -m""
git push origin 开发分支

需要同步 master 分支时:

git fetch -a
git checkout master
git pull origin master
git checkout 开发分支
git rebase master

需要比较,revert 提交的分支时:

$ gitk --reflog

📑 LF will be replaced by CRLF


git config core.autocrlf true

📑 从 tag 中恢复


比如,在 116 上快速恢复 tag2

git reset --hard tag2