这是我参与「第六届青训营 -后端场」笔记创作活动写下的第8篇笔记。
1.Git的介绍
Git 是一个分布式版本控制系统,用于跟踪文件和目录的变化,并协助多人协作开发项目。它是由Linus Torvalds创建的,在开源社区得到了广泛的应用和支持。
Git 的好处包括:
- 分布式架构:每个开发者都拥有完整的代码历史记录和仓库拷贝,可以在本地独立工作,无需依赖网络连接。
- 高效的分支管理:Git 的分支管理能力非常强大,支持高效的并行开发和特性分支开发模型。
- 快速和轻量级:Git 的设计目标之一是速度和占用空间的优化,使得操作快速且占用资源较少。
- 强大的版本控制功能:Git 可以跟踪文件和目录的每个变化,并记录详细的历史记录,方便查看、恢复和比较。
- 良好的兼容性和社区支持:Git 已经成为开源社区的事实标准,有广泛的支持和丰富的生态系统。
2.Git的下载
- 进入Git官网
https://git-scm.com/
选择适合自己系统的版本,进行下载
2.1设置用户签名
git config -global user.name 用户名
git config -global user.email 邮箱
Git首次安装时必须设置用户签名,否则无法提交代码。
3.使用Git客户端
git --version
git --help
4.Git 的四个工作区域
Git 有四个工作区域:工作目录(Working Directory)、暂存区(Staging Area/Index)、本地仓库(Local Repository)和远程仓库(Remote Repository)。
4.1工作目录
工作目录是你在本地机器上创建和修改文件的地方。当你克隆或者从远程仓库拉取代码时,它会把代码保存在工作目录中。你可以在这个目录下进行修改、添加、删除和重命名文件。
4.2暂存区
暂存区是一个缓冲区域,用于暂时存放你想要提交到版本控制的更改,它位于本地仓库内。在提交之前,你需要使用 git add 命令将工作目录中的修改添加到暂存区。通过暂存区,你可以选择性地将特定的更改提交到版本控制系统。
4.3本地仓库
本地仓库是存储项目的完整历史记录的地方。当你使用 git commit 命令时,暂存区中的更改会被提交到本地仓库中,并生成一个唯一的提交记录。本地仓库包含了完整的版本历史和元数据,你可以使用各种 Git 命令来查看、回溯和管理提交记录。
4.4远程仓库
远程仓库是存储在网络上的共享版本库。它可以位于本地节点之外,也可以托管在像 GitHub、GitLab 或 Bitbucket 等服务提供商的服务器上。远程仓库允许多个开发者协同工作,他们可以推送和拉取代码来与团队共享更改。
5.Git文件的四种状态
git的工作流程简要说明:
-
在工作目录中添加、修改
-
将需要进行版本管理的文件放入暂存区域
-
将暂存区域的文件提交到git仓库
因此,git文件一般有三种状态,分别为:已修改、已暂存、已提交。
6.Git项目版本控制
以下是git版本切换的一些命令:
1.查看版本信息
reflog或log
2.切换版本,包括将低版本切换为高版本
git reset --hard 版本号
3.查看文件内容
cat filename
4.查看.git下的refs目录
.git/refs/heads/master
Git合并分支
- 查看分支:git branch
- 创建分支:git branch name
- 切换分支:git checkout name
- 在当前分支上修改文件 vim filename
- 在当前分支提交:git commit -m 'name first commit'
- 切换到主分支:git checkout master
- 创建以及切换分支:git checkout -b name
- 合并某个分支到当前分支:git merge name
- 删除分支:git branch -d name
解决Git合并分支冲突
在 Git 中,当我尝试合并(merge)两个分支时,发现两个分支上的相同文件有不同的修改就会发生冲突。解决冲突步骤如下:
- 查找冲突:首先,可以使用
git status命令查看工作目录中的冲突文件列表。Git 会用特殊标记标识出冲突的部分。 - 手动解决冲突:打开冲突文件,会看到像这样的标记:
<<<<<<< HEAD
代码在当前分支的修改
=======
代码在合并分支的修改
>>>>>>> branch_name
<<<<<<< HEAD 到 ======= 是当前分支的内容,======= 到 >>>>>>> branch_name 是合并分支的内容。
- 修改冲突:根据需要,手动编辑冲突文件以解决冲突。可以选择保留其中一个分支的更改,或者将两个分支的更改合并在一起。删除特殊标记
<<<<<<< HEAD、=======和>>>>>>> branch_name,并将文件保存。 - 添加解决后的文件:使用
git add命令将解决冲突后的文件添加到暂存区。 - 完成合并提交:接下来,使用
git commit命令完成合并提交。Git 会自动生成一个默认的合并提交消息,可以保留它,也可以编辑成更有意义的消息。 - 继续合并或推送:如果还有其他冲突需要解决,则重复上述步骤,直到所有冲突都得到解决。一旦所有冲突解决完毕,可以继续完成合并操作或使用
git push命令将合并后的分支推送到远程仓库。
具体操作示例如下:
//1.在当前主分支修改文件
vim filename
//2.提交文件
git add .
git commit -m 'modifiy by master' filename
//3.切换分支
git checkout bug-fix
//4.修改同一个文件
vim filename
//5.提交文件
git add.
git commit -m 'modifiy by master' filename
//6.切换到主分支
git checkout master
//7.合并分支
git merge hot-fix
//8.手动修改文件
vim filename
//9.再次添加到暂存区
git add .
//10.再次提交
git commit -m 'merge commit'
Git团队协作
首先项目队长先写了一个项目,他把它从本地库推送(push)到远程仓库,小组其他的成员从远程库里clone到自己的本地库,小组成员完成一些代码后又可以通过push操作将代码传进远程库参与团队协作。
同理,其他的成员同样可以从clone以及push进远程库中。
此外,当他人提交了代码后需要pull操作拉取进本地库再进行push操作。
Git跨团队协作
首先有一个开源软件,例如从a团队有一个项目从本地库push进远程库
b团队通过fork操作拷贝了这个项目到远程库,再clone到自己的本地库
经过团队的修改push回远程库的最终版本,发送pull request请求经过a团队的审核,审核通过后a会merge进自己的远程库中
参考资料: