文件压缩
一个文件很大时,每一次做很小的改变,执行 add 之后都会产生一个新的 commit,导致 objects 会很大,而且反复。执行 git gc 能够对其进行压缩解决,产生的文件寄存与 objects/pack 中
git verify-pack -v .git/objects/pack/pack-xxxxx.pack 查看压缩文件所蕴含的原始文件
文件解压
git unpack-objects < .git/xxxxxxxx.pack 这里的 pack 文件必须移除到.git/objects/pack 目录之外能力进行解压
清理垃圾
git fsck(fill system check) 查看悬空的,没有被援用的 blob 对象,也就是垃圾对象
git prune -n 也能够用来查看垃圾对象
git prune 清理垃圾对象
革除因为删除分支遗留的 objects
git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c.pruneExpire=now gc “$@”
场景:彻底从代码仓库中删除某些信息,比方敏感信息,明码等
如何不提交代码切换到其余分支?
git stash 形式:
首先执行 git add *
git stash 将代码临时保存起来,能够同时对多个分支进行临时存储
切换到其余分支实现开发之后回到以后分支执行 git stash pop 能够复原到之前的状态
git stash show 查看以后分支临时存储的内容
tea-app-oceanus/src/app.ts | 1 +
1 file changed, 1 insertion(+)
git stash list 查看所有具备临时存储的分支 list
stash@{0}: WIP on master: a88a5624 fix: 修复 deploy 执行异样
stash@{1}: WIP on v5.2.0: fb98f6b2 feat: 调整合并后的代码
git worktree 形式:
git worktree add ../ 文件夹名称 分支名
通过 git worktree list 能够查看以后的所有 worktree list
当初咱们能够自在切换到不同的 tree 进行工作,须要在新创建的目录中从新下载包。
实质上就是将原有的文件夹复制一份,并指定到特定的分支。
删除 tree:git worktree remove 文件夹名称(我的项目目录的名称,不论执行 add 时文件夹门路嵌套有多深)
git commit –amend 形式(修改形式):
先执行 git add /git commit 操作
切换到其余分支实现批改,回到开始分支,再次进行批改提交时执行 git commit –amend 笼罩上一次提交,提交信息不能批改。
当你在修补最初的提交时,与其说是修复旧提交,倒不如说是齐全用一个 新的提交 替换旧的提交,了解这一点十分重要。从成果上来说,就像是旧有的提交从未存在过一样,它并不会呈现在仓库的历史中