Git 相关指令
文件权限
# 查看当前目录下权限
git ls-tree HEAD
# 添加 mvnw.sh 可执行权限
git update-index --chmod=+x mvnw.sh
# 还需要继续 commit & push
LFS
不把大文件直接存进Git仓库,而是用“指针文件”代替.
- 你在本地用LFS追踪
*.psd文件后,执行git add时,Git仓库里存的只是一个几KB的文本指针(指向远程服务器)。 - 当你
git clone时,默认只下载指针文件(极快)。只有在需要具体版本时(如git checkout),LFS才会按需从远程服务器下载对应的实际大文件。
track
执行后,项目里会自动生成一个
.gitattributes文件,一定要把它先git add并提交,这样团队其他人克隆时才会自动应用规则。
- 后缀:
git lfs track "*.psd" "*.zip" "*.mp4" - 文件夹:
git lfs track "assets/models/*" - 单个文件:
git lfs track "really_big_file.dat"
清除悬挂内容
概率极低一般出现在多人协作中
git fsck
git gc --prune=now
# --prune=now 有点危险。默认情况下, --prune 会保留 2 周内的悬挂 blobs,也就是说,如果你 5 分钟前不小心做了错误的重置,或者昨天删除了一个分支,你都可以恢复。一旦你运行了这条命令,你就会丢失直到现在的所有挂起blobs,而不是两周前的。
GC:bad object refs/remotes/origin/HEAD
# 移除失效的HEAD指向
mv .git/refs/remotes/origin/HEAD /tmp