Skip to main content

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,而不是两周前的。

ref:https://stackoverflow.com/questions/28633956/why-does-git-keep-telling-me-its-auto-packing-the-repository-in-background-for

GC:bad object refs/remotes/origin/HEAD

# 移除失效的HEAD指向
mv .git/refs/remotes/origin/HEAD /tmp

ref:https://stackoverflow.com/questions/37145151/how-to-handle-git-gc-fatal-bad-object-refs-remotes-origin-head-error