Git基础学习
# Git
版本控制#
简单来说就是用于管理多人协同开发项目的技术
不明白版本控制的话,如果你写过简书,那么你的每一篇简书的设置里都有历史版本的选项,里面记录了你更新简书的每一个版本,并且能够回调到那个版本
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,例如:软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性以及软件整合问题等等
版本控制的作用#
版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工程工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
常用的版本控制工具#
- Git
- SVN
- CVS
- VSS
- TFS
版本控制分类#
-
本地版本控制RCS#
记录文件每次的更新,可以对每个版本做一个快照,或者记录补丁文件,使用个人,例如RCS
-
集中版本控制SVN#
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或更新自己的代码
-
分布式版本控制Git#
每个人都拥有全部的代码,虽然这样增大了安全隐患,不会因为服务器的问题导致代码的丢失
Git历史#
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
Linux社区中存在很多的大佬!破解研究 BitKeeper !
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。(2周左右!) 也就是后来的 Git!
Git环境配置#
打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。
所有东西下载慢的话就可以去找镜像!
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
Git Bash:Unix与Linux风格的命令行,使用最多
Git CMD:Windows风格命令行
Git GUI:图形界面的Git
命令 | 作用 |
---|---|
cd | 回到根目录 |
cd .. | cd和..之间有个空格,用于返回上级目录 |
pwd | 显示当前所在目录的绝对路径 |
ls | 列出当前目录的所有文件 |
ll | 列出当前目录的所有文件,其内容更为详细 |
touch | 新建一个文件,其名称为全名称,包含文件类型描述 |
rm | 删除一个文件 |
mkdir | 新建一个目录,也就是新建一个文件夹 |
rm -r | rm和-r中有空格,用于删除一个文件夹 |
mv A B | 将A文件或者文件夹移动到B文件夹内 |
reset | 重新初始化终端 |
clear | 清屏 |
history | 查看指令历史 |
exit | 退出 |
如同我的世界输入指令一般,按TAB键可以快速补全指令
Git配置#
git和Java一样,如果想要在任何地方都能用git,那么需要设置环境变量,但是我们右键有git bash here,所以配置环境变量是用来兜底的,其实自动配好的
git config - | 查看git配置 |
---|---|
git config --system --list | 查看系统config |
git config --global --list | 查看当前用户配置 |
在Git安装文件目录下有gitconfig配置文件,对应的是系统config,全局配置
在用户文件目录下有另一个gitconfig配置文件,对应的是用户配置,有名称和邮箱……
设置用户名与邮箱(用于标识)#
git config --global user.name "name" | 用于设置用户的信息,name也可以换成其他的信息类别,像:email,address等等 |
---|
Git基本理论#
工作区域#
Git本地有三个工作区域:工作目录、暂存区、资源库
Git云还有一个工作区域:远程git仓库
其中文件在这四个工作区的转换关系如下:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
git push\git commit\git add files\git pull\git reset\git checkout是将文件移入指定工作区的方法
Git项目搭建#
可以使用两种方式建立一个git项目
- 新建一个本地目录,然后git hash here中用git init指令初始化git项目
- 从远程仓库克隆一个git项目,git clone 项目链接
Git文件操作#
文件的四种状态:#
- Untracked:未跟踪状态,不参与版本控制,可通过git add将状态改为Staged
- Unmodify:文件入库但未修改的状态,如果文件被修改则文件状态改为Modified,如果使用git rm移出版本库,则成为Untracked状态
- Modified:文件已经修改,可通过git add进入暂存staged状态,使用git checkout则丢弃修改,返回unmodify状态,这个git checkout即将文件移出库!!
- Staged:暂存状态,执行git commit则将修改同步到库,此时库文件和本地文件一致,文件未Unmodify状态,执行git reset HEAD filename取消暂存,文件状态未Modified
git status [filename] | 查看指定文件状态 |
---|
git status | 查看所有文件的状态 |
---|
git add . | 添加所有文件到暂存区 |
---|
git commit -m | 提交暂存区中的内容到本地仓库 -m指提交信息 |
---|
文件的选择提交#
通配符代码 | 作用 |
---|---|
*.文件类型 | 忽略此文件类型的所有文件,例如*.txt即将所有的txt文件忽略 |
!文件名.文件属性 | 忽略此文件 |
/文件夹名称 | 向前忽略根目录下的TODO文件,不包括此目录 |
文件夹名称/ | 忽略此文件夹下的所有文件 |
文件夹名称/*.文件类型 | 忽略此文件夹下的此种类型的文件,对其他文件夹下的此种文件无影响 |
使用码云#
也可以使用GitHub,但是速度较慢,国内的Gitee就可以
- 注册账号
- 完善信息
- 配置SSH公钥
- 创建远程仓库
IDEA中集成Git#
简单来说就是IDEA会发现项目文件中的Git配置文件并自动连接到远程仓库,我们要做的是在项目中初始化Git配置文件或者在IDEA创建好项目之后从远程仓库中克隆过来,此时我们会发现,IDEA右上角将会出现Git的快捷键,右下角的Version Control点开后可以查看版本以及执行代码。
Git分支#
两张图就可以理解
关于git分支的指令#
指令 | 作用 |
---|---|
git branch | 列出所有本地分支 |
git branch -r | 列出所有远程分支 |
git branch [branch name] | 新建一个分支,但位置不变 |
git checkout -b [branch] | 新建一个分支,并跳转到新分支里 |
git merge [branch] | 合并指定分支到当前分支 |
git branch -d [branch name] | 删除分支 |
git push origin --delete[branch name] | 删除远程库里的分支 |
git branch -dr [remove/branch] | 删除远程分支 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异