少女祈祷中...

本来想记录一次git的踩坑,但是考虑到后面可能会阅读Pro Git,因此创建本文档。

问题

大文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(base) chengyiqiu@chengyiqiu:~/code/Diffusion-Backdoor-Embed$ git push
Enumerating objects: 60081, done.
Counting objects: 100% (60081/60081), done.
Delta compression using up to 12 threads
Compressing objects: 100% (60039/60039), done.
Writing objects: 100% (60069/60069), 666.84 MiB | 1.32 MiB/s, done.
Total 60069 (delta 28), reused 60053 (delta 20), pack-reused 0
remote: Resolving deltas: 100% (28/28), completed with 6 local objects.
remote: error: Trace: 0f3e1943ccdf9211120a7ae0096c143c9db45ea84c1a974db4f904499a6d3f13
remote: error: See https://gh.io/lfs for more information.
remote: error: File backdoor_diffusion/results/model-1.pt is 545.64 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/chengyiqiu1121/Diffusion-Backdoor-Embed.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/chengyiqiu1121/Diffusion-Backdoor-Embed.git'

git push的时候,忘记忽略掉生成的模型文件了,导致出现大文件上传失败的报错,不想用GLFS,有容量限制。

按照这个blog解决了。

1
2
3
4
5
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch backdoor_diffusion/results/model-1.pt'
vim .gitignore #将backdoor_diffusion/results/加入到ignore里面去
git add .gitignore
git commit -m 'add big file to git ignore'
git push --force # 不force的话提示远程仓库领先于本地

冲突

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(pdiff) chengyiqiu@server:~/code/Diffusion-Backdoor-Embed$ git pull
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge (the default strategy)
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.

不小心将大文件add & commit了

先使用git log查看近期提交,然后git reset进行撤销到上一个版本号,最后重新add & commit & push