Git 是一种分布式版本控制系统,最初由 Linus Torvalds 于 2005 年为 Linux 内核开发。它主要用于跟踪文件的更改,特别是在软件开发过程中,可以帮助团队成员协同工作。它在实际项目开发中,应用非常广泛,我们这一节来掌握它的基本使用,为以后工作做个铺垫。
一、git安装
二、git基本概念
git可以实现代码的版本控制,有利于实际项目的开发,实际上项目的开发分为很多个阶段,每个阶段便构成了代码的不同的版本,它保存了代码的整个开发过程,分模块,分阶段,这样,团队开发的效率就会得到提升,当多个开发者一起工作时,每个人都在不同的地方修改代码。没有版本控制,大家会不断覆盖彼此的工作。版本控制系统就像一个超级助手,帮每个人记录他们的修改,并在需要时合并这些修改,确保每个人的工作都能被正确地整合。可以把它比作一个“时间机器”或者一个超级智能的“备忘录”,用来记录和管理文件(特别是代码)变化的历史。想象你在写一本书,每次写完一部分都能按下一个按钮,保存当前的状态。这样,你随时可以回到任何一个保存过的版本,无论你后来对书做了多少修改。Git 就是这样的时间机器,每次你提交(commit)代码,它就会记录当前的状态,让你可以随时回到以前的版本。
2.1 相关概念
- git 是软件 ,linux上就是命令、windows上就是应用程序(进行代码版本控制)
- github 网站(国外的托管代码平台,存储代码)
- gitee 阿里,码云(国内的代码托管平台)
2.2 代码版本控制的发展阶段
2.2.1 集中式代码管理
集中式版本控制系统(CVCS)依赖于一个中央服务器来存储所有的版本文件。用户从中央服务器中检出代码的工作副本,进行修改后再提交回中央服务器。多个开发人员在本地开发代码,只有代码的最新版本,都将代码上传至服务器,服务器会存储代码的各个历史版本,如果服务器坏掉了,在服务器的各个历史版本都没有了,以后想要找之前的版本,再进行开发其他的项目,就没办法进行了。
特点:
- 中央仓库: 所有代码都存储在一个中央仓库中。
- 简单管理: 管理和设置相对简单,适合小团队和项目。
- 依赖网络: 操作需要与中央服务器的连接,离线工作不便。
- 冲突处理: 冲突处理通常在提交到中央服务器时进行。
优点:
- 易于理解和管理。
- 适合小型团队,简单的工作流程。
- 所有的版本历史保存在一个地方,易于备份和恢复。
缺点:
- 单点故障:中央服务器若出现故障,整个团队的开发工作可能会中断。
- 不支持离线工作:离线时无法提交代码,也无法获取最新的代码更新。
常见工具:
- Subversion (SVN)
- Perforce
2.2.2 分布式代码管理
分布式版本控制系统(DVCS)允许每个用户拥有代码库的完整副本。用户可以在自己的本地仓库中进行修改和提交,然后再与其他用户或中央仓库进行同步。每个开发人员都会有代码的各个历史版本,你写好了最新版本,提交到服务器上,别人要用,就会下载,下载下来会把各个历史版本的代码都下载下来,这样的好处就是,不怕服务器坏掉,坏掉之后,开发人员再上传就好,因为开发人员都有各个历史版本的代码。
特点:
- 本地仓库: 每个开发者都拥有整个代码库的本地副本,包括历史记录。
- 离线工作: 允许在离线状态下进行提交和其他版本控制操作。
- 分布式协作: 支持开发者之间更灵活的协作和分支管理。
- 冲突处理: 冲突处理在本地仓库与其他仓库同步时进行。
优点:
- 无单点故障:即使中央仓库不可用,开发者也可以继续工作。
- 支持离线工作:开发者可以在任何时间进行提交和其他操作。
- 更好的性能:大部分操作都是本地完成的,速度更快。
- 灵活的协作:支持更复杂的分支和合并策略,适合大型项目和分布式团队。
缺点:
- 初始学习曲线较陡:需要学习如何处理本地和远程仓库的同步。
- 存储需求大:每个开发者都需要存储整个代码库的副本。
- 复杂管理:大规模协作时,可能需要更复杂的管理和工具支持。
常见工具:
- Git
- Mercurial
2.3 git属于分布式代码管理工具
三、 git的使用
3.1 四个工作区
git本地有四个工作域:工作区(working directory), 暂存区(stage/index), 本地仓库(repository)。远程仓库(远程服务器上的git仓库(remote directory))。其关系如下:
- 工作区,就是你平时存放项目代码的地方
- 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数 据。其中HEAD指向最新放入仓库的版本
- 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
3.2 工作流程
git工作的一般流程:
- 在工作目录中添加,修改文件
- 将需要进行版本管理的文件放入暂存区
- 将暂存区的文件提交到git仓库
3.3 git基本命令
3.3.1 创建本地仓库,提交代码
注意事项: 第一次使用git命令提交代码之前,需要先设置用户名及邮箱,之后就不需要了:
git status 查看状态, 如果工作区的代码和本地仓库最新版本的一致,就会显示无文件要提交,干净的工作区。给本地仓库提交一个版本,都会有一个唯一的编号,来标识。往暂存区可以add很多次,然后一次性提交很多到仓库。
经过以上几步,我们就可以将我们写的代码存放到本地的仓库中。我们进行简单总结:
- git init : 初始化仓库,将存放代码的目录变为一个可以通过git管理的仓库
- git add 代码文件名 : 将代码文件添加到暂存区
- git commit -m "版本描述信息" : 将代码从暂存区提交到本地仓库
- git log : 可以查看提交的历史记录
- git reflog 查看对仓库做的操作
- git status 查看仓库状态,有些操作必须保证工作区是干净的才可以做
- git reset --hard HEAD^^ 几个^就是回退几个版本
- git reset --hard 编号 回到哪个版本
3.3.2 其他常用操作
1、比较版本差异:使用git diff HEAD命令,HEAD也可以省略默认就是与最近 一次比较。
使用git diff HEAD 比较当前内容与最后一次提交的版本的差异,如下在main.c中添加了一行内容,显示添加的一行前面有‘+’号标识。如果内容相同则该命令不显示输出结果。HEAD也可以省略默认就是与最近 一次比较。
2、撤销本次修改:使用git checkout filename 放弃对工作区代码的修改。
3、从暂存区撤销:使用git reset HEAD filename 从暂存区撤销
注意:在暂存区中的文件可以撤销,但是加入到仓库中的文件就不能撤回了 ,必须要重新提交新的修改后的文件才可以。
至此,就将使用命令的方式来使用git介绍完毕,掌握最基本的操作,是我们以后工作的基础,下一节我们将介绍git分支的操作命令,感谢阅读,如果喜欢,点赞关注加收藏!