Skip to content

Commit a138793

Browse files
authored
Merge pull request #67 from speacil111/master
git updated
2 parents 479fecd + 35728ce commit a138793

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

docs/basic/git.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,26 @@ Creating a new branch is quick AND simple.
279279

280280
我们可以使用命令 `git pull origin master` 来从远端 `origin``master` 获取其最新的数据(可能是别人更新上去的)。正常的推送更改流程为:先 Add 和 Commit 本地修改,然后拉取远端更改,如果此时出现了合并冲突(英文:Merge Conflict),解决合并冲突。然后,在合并冲突解决后推送更改。
281281

282+
## Git LFS: 如何优雅管理大文件
283+
284+
Git 的逻辑是存储 _diff_. 但对于二进制大文件, 尤其是图片, 视频, 模型等, Git 无法给出正确的 diff, 从而会倾向于把整个文件删掉重新上传.
285+
286+
那么: 如果你有一个模型, 这个模型有 100MB, 你每次微调了一点, 调了 10 次, 这时候你的 Git 仓库就有 1GB 了. 其他人在 Pull / 你在其它设备上 Pull 的时候就要下载完整的 1GB 数据 (即便你并不需要之前的 9 个版本). 对一个体量更大的项目, 这就会变得不可接受了. (你也不想为了一个 100M 的项目下载 10GB 的东西吧)
287+
288+
因此, Git LFS (Large File Storage) 被开发出来以解决这一问题. LFS 的基本原理是把仓库里的文件换成一个指向 LFS 服务器的 "指针", 然后在需要的时候再下载这个文件.
289+
290+
LFS 在 Linux 下一般是一个单独的包 `git-lfs`. 安装之后就可以用 `git lfs init` 初始化 LFS.
291+
292+
此时 LFS 给 Git 挂了一些钩子, 使得所有被 `git lfs track` 的文件都会随着 Git 的 Push / Pull 被上传 / 下载到 LFS 服务器上.
293+
294+
## Git Ignore: 不要把奇怪的文件上传到仓库
295+
296+
在 Git 仓库中, 绝大多数时间里都会有一些并不需要上传的文件, 不管是训练模型的输出, 编译生成的程序, IDE 的配置, 测试数据库等等.
297+
298+
**一定记得把这些文件加入到 `.gitignore` 文件中.** 这个文件会告诉 Git 哪些文件不需要被上传.
299+
300+
**`man gitignore`**
301+
282302
## 后续拓展
283303

284304
想要学习更多 Git 内容?

0 commit comments

Comments
 (0)