git和git-lfs编译与使用

git和git-lfs编译使用

编译git

github

1
2
3
4
5
6
7
8
9
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.25.2.tar.gz
tar -xvf git-2.25.2.tar.gz
cd git-2.25.2
make configure NO_OPENSSL=1
./configure --prefix=/usr/local/git all
make
make install
echo "export PATH=/usr/local/git/bin:$PATH" >> /etc/profile
source /etc/profile

编译git-lfs

1
2
go build
go install

手动下载安装包

1
2
3
tar xf git-lfs-*.tar.gz
cd git-lfs-*
sudo ./install.sh

存放到git bin目录后执行

1
git lfs install

使用git-lfs

添加跟踪

1
2
git lfs track "*.so"
git lfs track "resource/*"

一定要先track然后再进行add commit操作 否则查看lfs规则更新

其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 查看当前使用 Git LFS 管理的匹配列表
git lfs track

# 使用 Git LFS 管理指定的文件
git lfs track "*.psd"

# 不再使用 Git LFS 管理指定的文件
git lfs untrack "*.psd"

# 类似 `git status`,查看当前 Git LFS 对象的状态
git lfs status

# 枚举目前所有被 Git LFS 管理的具体文件
git lfs ls-files

# 检查当前所用 Git LFS 的版本
git lfs version

# 针对使用了 LFS 的仓库进行了特别优化的 clone 命令,显著提升获取
# LFS 对象的速度,接受和 `git clone` 一样的参数。 [1] [2]
git lfs clone https://github.com/user/repo.git

lfs规则更新

1
2
git lfs track "*.xlsx"
git lfs migrate import --include="*.xlsx" --include-ref=refs/heads/master

通过以上规则进行添加和更新 migrate会清理所有历史提交的文件改为文件指针 略等于删库重建

在完成所有更新后 需要对.git仓库进行整理修剪和提交
-f意思是–force 一般的git仓库管理会锁定master分支并保护 需要先解开保护.

1
2
3
4
git gc --prune=now
git reflog expire --expire-unreachable=now --all
git push --all -f
git push --tags

强制更新本地(注意保存好本地修改)

1
2
3
git fetch --all
git reset --hard origin/master
git pull

lfs规则更新2

删除对应后缀的所有文件后 添加track跟踪
然后重新添加所有该后缀的文件.