使用 git 管理本地项目

使用 git 管理本地项目

今天在调试完一个小项目之后,我本来想做代码的版本管理。按照以前的做法,我想把整个项目的顶层目录拷贝一份,结果目录下的文件过多,拷贝时间过长。因此,我想尝试其他项目管理的工具。我打算用 git 管理项目,利用 git 管理时可以在 .gitignore 文件中指明不需要上传的文件类型,而且利用代码仓库管理项目是更简明高效的方式,可以记录每一个版本修改的内容,并将不同版本的代码作为分支保存。文档中记录了一些博客链接,最后有一个上传带大文件的项目的例子。如果之后我继续学习使用了 git 的其他功能,会继续在这个文档更新

git 架构图

在这里插入图片描述
在这里插入图片描述

一个详细教程

https://jrhar.blog.csdn.net/article/details/116703787?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1-116703787-blog-136177657.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1-116703787-blog-136177657.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=1#%E5%B7%A5%E4%BD%9C%E5%8C%BA%E4%B8%8E%E7%BC%93%E5%AD%98%E5%8C%BA

基本流程

https://blog.csdn.net/HusKiy/article/details/135263188
https://blog.csdn.net/herowgq/article/details/119357688
其中,上传文件时可以通过 git add xxx.xxx 指定具体文件的上传过程,但是上传文件夹似乎没有很好的办法,只能通过 git add . 等范围性的指令来确定上传项目的文件结构
如果是 Win10、Win11,应该需要安装 git bash 后在 git bash 内操作 (也可以在各个 IDE 内操作);如果是 Linux,可以直接在终端操作 (也可以在各个 IDE 内操作)

.gitignore

添加 .gitignore 文件,避免不必要的文件通过 git 上传
https://blog.csdn.net/weixin_45318845/article/details/120740012
其中,.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。如果还不行,则需要把本地缓存删除后 push 到 github 仓库,然后全部重新上传

查看存档信息、读档

https://ysyx.oscc.cc/docs/ics-pa/git.html#%E5%AD%98%E6%A1%A3

删除暂存区文件

https://deepinout.com/git/git-questions/107_git_how_to_clear_git_caches.html

push 添加了暂存区以外的文件

https://blog.csdn.net/weixin_42156097/article/details/107029587

git push 报错:fatal: unable to access ‘https://github.com/…‘…

https://blog.csdn.net/m0_45388819/article/details/115795229
https://www.cnblogs.com/xiaobai-cs/p/16803949.html

大文件上传

如果文件大于 100MB,需要安装 git-lfs 再上传文件。安装 git-lfs 后上传大文件命令和原先一致
https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md
https://git-lfs.com/
https://zhuanlan.zhihu.com/p/480284446
https://blog.csdn.net/GY5338/article/details/116139040

理论上安装 git-lfs 之后上传大文件命令和原先一致,但是在实操过程中还是报了有文件大于 100M 的错误。问到一个解决方法是,要把整个仓库删了,先把其他文件上传,再把超过 100M 的大文件拿过来单独上传。这里顺便把操作过程全部记录一遍

本地修改 / 删除远程仓库文件

https://blog.csdn.net/weixin_45389633/article/details/111244451
暴力但对初学者很有效的方法,直接在网页上删除:
https://docs.github.com/zh/repositories/working-with-files/managing-files/deleting-files-in-a-repository

实操 1

在此之前已经在设置过本地仓库的账号与邮箱。如果未设置,可以运行以下命令完成设置

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

找到所有大于 100M 的文件,另行存储

find . -type f -size +100M

先登入 github 账户

初始化 git 本地仓库

git init

添加工作目录下的文件到暂存区。这里选择添加所有文件

git add .

将暂存区的全部文件上传到本地仓库

git commit -m "xxx"

本地仓库与 github 仓库关联。本地仓库关联名为 origin

git remote add origin https://github.com/xxx/xxx.git

上传之前,设置关联后的本地仓库在 github 仓库中的待上传分支。此处设定为 master 分支。运行后实际会将二者先同步。如果报错:fatal: refusing to merge unrelated histories,则在命令后加–allow-unrelated-histories;如果遇到 fatal: Need to specify how to reconcile divergent branches,参考下面的链接:https://blog.csdn.net/qq_45677671/article/details/122574671

git pull origin master

将本地仓库的全部文件上传到 github 仓库的分支。如果报错:hint: Updates were rejected because the tip of your current branch is behind,参考下面的链接:
https://zhuanlan.zhihu.com/p/422024766
如果 git pull 出现 "fatal: unable to access …"这样的错误,按照下面的链接配置代理:https://blog.csdn.net/xx780452700/article/details/124313274
如果 git pull 出现 “fatal: refusing to merge unrelated histories”,一般是没有先把代码克隆到本地导致的,可以按照这篇的方法设置本地仓库与 github 仓库关联:

git remote set-url origin 远程仓库地址

https://blog.csdn.net/qq_43827595/article/details/104310515
或者直接允许没有关联的本地仓库代码上传到 github 仓库:

git pull origin master --allow-unrelated-histories

完成 git pull 后 git push

git push -u origin master

如果 git push 时出现 “error: src refspec main does not match any” 的错误,可以按照以下链接解决:
https://blog.csdn.net/bjbz_cxy/article/details/113931821
使用checkout创建对应分支

git checkout -b master

现在 100M 以下的文件已经上传。接下来上传大文件。下载 git lfs 后,在本地仓库启动 git lfs

git lfs install

指明要追踪的大文件。理论上不用这么麻烦,git lfs 会自己筛选出大文件,但是我之前尝试的时候出错了,所以现在要指明大文件的路径。这里我要上传的大文件是 xxx.pth

git lfs track xxx.pth

清空暂存区的所有文件

git rm --cached * -r

可以查看一下暂存区当前有哪些文件

git ls-files --stage

然后添加 git lfs 的配置文件到暂存区

git add .gitattributes

添加工作目录下的大文件到暂存区

git add xxx.pth

将暂存区的全部文件上传到本地仓库

git commit -m "xxx"

先 git pull 之后将本地仓库的全部文件上传到 github 仓库

git pull origin master
git push origin master

如果上传结果是大文件覆盖了之前其他文件的上传结果,可以使用 git push 命令的 --no-force 选项,但是这个选项不能保证不覆盖远程分支,因为如果远程分支的历史与本地分支有冲突,git 仍然可能需要强制推送(force push)来合并这些变更。之后会继续学习 git checkout、git branch 等命令

实操 2

先按照这个教程做:
https://zhuanlan.zhihu.com/p/677661247
如果遇到 “batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.” 的问题,可以按照以下教程解决:
https://github.com/orgs/community/discussions/68492

总结

git 是一个很实用的代码版本管理工具。要熟悉 git 的功能,最好的方法就是将 git 应用于实际项目的管理中

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值