书生模型实战系列文章目录
第一章 入门岛L0(Linux)
第二章 入门岛L0(python)
第三章 入门岛L0(Git)
文章目录
作业
提交作业
任务一:破冰活动:自我介绍
:
https://github.com/BigBoomDream/Tutorial/blob/camp3/data/Git/task/camp3_2241.md
任务二:实践项目:构建个人项目
:
https://github.com/BigBoomDream/Learning_LLM_internvl
提示:以下是本篇文章正文内容
一、Git是什么?
来自通义千问的解释:
Git是一个分布式版本控制系统,它被广泛用于软件开发和项目管理中,以追踪文件的修改历史。通俗点说,Git就像是一个可以记录你文件变化的日志本,只不过这个日志本功能非常强大,能够处理非常复杂的情况。
举例:
假设你是一位作家,正在写一本小说。这本小说存储在你的电脑上,名字叫做Novel.txt
。我们来看看如何使用Git来管理这本书的写作过程。
- 第一步:初始化Git仓库
在你的电脑上,打开命令行工具(如Windows的CMD或PowerShell,Mac的Terminal)。
导航到包含Novel.txt文件的目录。输入git init命令,这会在当前目录下创建一个隐藏的.git文件夹,这里就是Git管理版本的地方。
- 第二步:添加文件到Git
输入git add Novel.txt,这告诉Git开始跟踪Novel.txt的变化。 输入
git status
,你会看到Novel.txt已经被标记为要添加到仓库中。
- 第三步:提交更改
输入
git commit -m "初始版本"
,这会保存当前Novel.txt的状态,并添加一条注释,描述这次提交的内容。
每次你修改了Novel.txt,重复执行git add
和git commit
,这样你就有了多个版本的记录。
- 第四步:查看历史
输入git log,可以看到所有提交的历史记录,包括日期、作者和提交信息。 使用git show
可以查看特定版本的细节,commit-id是你在git log中看到的一串长字符串。
- 第五步:回退到旧版本
假设你对某次修改不满意,想回到之前的版本,你可以使用
git checkout <commit-id> -- Novel.txt
,这里是你想要恢复到的版本的ID。
- 第六步:创建分支
当你想要尝试一些新章节的想法,但又不想影响主线故事时,可以创建一个分支。 输入
git branch my-new-chapter
,然后git checkout my-new-chapter
切换到这个分支。
在这个分支上,你可以自由地修改Novel.txt,而不会影响主分支(通常称为main或master)。
- 第七步:合并分支
当你对新章节满意时,可以将其合并回主分支。 切换回主分支
git checkout main
,然后输入git merge my-new-chapter
。
- 第八步:远程仓库与团队协作
如果你和其他作家合作,你们可以共享一个远程仓库(如GitHub、GitLab等)。 首先,你需要将本地仓库与远程仓库关联,使用
git remote add origin <repository-url>
。 然后,你可以使用git push origin main
上传你的更改,或者使用git pull origin main
获取其他人的更改。
通过上述步骤,你和你的团队就可以有效地管理文件的版本,追踪每一次的修改,以及协同工作,而无需担心丢失数据或产生冲突。Git的强大之处在于它能够处理大量的文件和复杂的变更历史,非常适合软件开发和大型项目管理。
二、Git一些基本概念
在Git中,我们经常听到的三个关键区域是:工作区(Working Directory)、暂存区(Staging Area)和Git仓库区(Git Repository)。下面我会用一个简单的例子来解释这三个概念。
图书馆借阅过程类比Git的工作流程:
图书馆(Library)
想象一下,图书馆就像是一个巨大的知识宝库,它保存着各种书籍的历史版本。这就好比是
Git仓库
,它是你的项目的中心存储库,包含了所有文件的版本历史。
阅览室(Reading Room)
在图书馆里,有一个专门的阅览室,读者可以在这里阅读图书,但不能直接在书上做任何标记或修改。这类似于
Git的工作区
,它是你实际进行开发和修改文件的地方,但这些修改尚未被正式记录。
书车(Book Cart)
图书馆员会使用一个小推车(书车),用来收集读者想要借阅的图书。当读者找到想要借阅的书时,他们会告诉图书馆员,然后图书馆员会把书放到书车上,准备借给读者。这个书车就好像是
Git的暂存区
,你在这里选择哪些修改应该被正式提交到仓库。
操作流程
- 从图书馆借书(克隆仓库)
当你想开始一个新项目或继续一个现有项目时,你会从Git仓库中克隆(Clone)项目到你的本地机器,这就像从图书馆借书一样,你把整个项目的最新版本下载到你的工作区。
- 在阅览室阅读和做笔记(在工作区修改文件)
在图书馆的阅览室,你可以阅读书籍并做一些笔记,但不能直接在书上做标记。同样,在Git的工作区,你可以打开文件,修改代码,但这些修改还没有被记录到Git的历史中。
- 选择书籍借阅(添加到暂存区)
当你决定要借阅某些书籍时,图书馆员会把这些书放到书车上。在Git中,当你准备好将一些修改提交时,你可以使用
git add
命令,把修改过的文件加入到暂存区
。
- 借书手续(提交到仓库)
最后,图书馆员会正式办理借书手续,把书借给你。在Git中,当你对暂存区的修改满意后,使用
git commit
命令,将修改正式提交到Git仓库,创建了一个新的历史记录
。
- 归还书籍(推送至远程仓库)
如果你对所做的修改非常满意,并且想让其他人也能看到,你可以把你的修改推送(
Push
)到远程仓库,这就像把书归还给图书馆,让其他人也能借阅你所读的书。
通过这个图书馆的类比,我们可以看到Git的工作流程与之非常相似,都是从一个中心库获取资源,在自己的空间进行操作,然后选择性地将改变反馈回中心库的过程。
三、Git常用指令
3.1 配置
全局设置用户信息 打开终端或命令提示符,并输入以下命令来设置全局用户名和电子邮件地址:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
查看全局配置:
git config --global --list
git config user.name
git config user.email
3.2 初始化
这个直接使用是将当前目录初始化成本地仓库的
初始化指定目录的则是 git init < repo >
如果是创建一个裸仓则是 git init --bare
将指定目录创建成裸仓 git init --bare < repo >
注:裸仓跟普通仓库的区别在于,裸仓一般就是用于远程中心仓库,可以被clone,普通仓库不具备被clone的条件。
在声明了裸仓库之后,使用git add命令报错如下信息:
git 错误 fatal: This operation must be run in a work tree
因为裸仓库无法进行git操作,所以在创建裸仓库之后还要进行git init操作
3.3 添加文件
git add < filename >
使用之后把文件添加到暂存区
3.4 提交文件到本地仓库
git commit -m “提交文件时的说明“
引号里面填写的是你提交文件时的说明,这个便于你了解版本修改内容”
这个命令是把文件从暂存区提交到仓库
3.5 远程仓库操作
git clone 克隆仓库
git push < remote-name > < branch-name > 提交到远程仓库
一般使用的是 git push origin master (main)
git pull 获取远程仓库中的最新更改
3.6 分支操作
git branch 查看仓库底下有多少分支
git branch < branch-name > 创建一个分支
git branch test 创建一个名字为test的分支
git branch -d < branch-name > 删除分支
git branch -d test 删除指定分支 test
git checkout -b <branch-name> 创建并切换分支
git checkout < branch-name > 选择分支
git merge < branch-name > 合并分支
git diff < filename > 查看分支具体改动
git log 查看git的提交历史,可以查看版本号,便于我们回退到某个历史
git relog 查看历史命令,便于我们回退到将来的某一个版本
git reset --hard < commit_id > 使用该命令可以让文件回归到特定版本
任务中采用的git命令:
git clone https://github.com/MrCatAI/Tutorial.git # 修改为自己frok的仓库
cd Tutorial/
git branch -a
git checkout -b camp3 origin/camp3
git checkout -b camp3_577 # 自定义一个新的分支
touch ./data/Git/task/camp3_557.md #创建自己的文件
提交更改到分支
git add .
git commit -m "add git_557_introduction" # 提交信息记录
git push origin camp3_577
注:初始化时可能需要创建对应的 token:(示例,可根据实际提示完成)
查看提交
在 github 页面将修改的内容 PR 到 Tutorial
下面可以查看修改的内容
也可以合并到自己的仓库
自己的仓库,可以自行 merge,作业提交到 Tutorial 需要维护者审核。
四、Git开发中遇到的问题以及解决方案
1、在git clone 中一直提示连接失败(不要用魔法!!!)
2、Github fork项目时只有默认分支。【最下面的对号不要点!!!】
https://zhuanlan.zhihu.com/p/706442338
3、使用vscode + git:在cmd界面, start code .
4、git push时,提示邮箱隐私问题,需要用隐藏地址。(不要用魔法!!!)https://blog.csdn.net/angelQin0704/article/details/136466097
https://blog.csdn.net/python_innocent/article/details/130560871
总结
课程设计的很好,前面的vscode之前没用过,学习到了远程连接和debug;现在又学习了最常用的分布式文件管理git。必须赞一个!!!感谢书生团队!!!
git安装教程
https://blog.csdn.net/mukes/article/details/115693833