git
什么是版本控制
-
帮助程序员进行代码的追踪、维护、控制等等一系列的操作
版本控制的功能
-
不同版本的存储管理
-
重大版本的备份维护
-
恢复之前的项目版本
-
记录项目
-
多人开发的代码合并
集中式版本控制
CVS和SVN都属于集中式版本控制
特点:
同步、追溯、备份
- 同步:让所有参与开发的程序员对代码的变更能够同步,最终得到相同的代码内容
- 追溯:可以回退到历史中的任何一个版本,便于查看版本变更内容
- 备份:对代码进行备份
缺点
代码开发、提交、提取都必须在有网环境下,必须依靠互联网才能工作,若是开发者处于网络环境不佳的地区,这会大大降低开发效率。再者,若是中心数据库所在的磁盘发生损坏,又没有进行备份,则数据就会丢失。
分布式版本控制
为了解决集中式版本控制的一些缺点,分布式版本控制应运而生,并且慢慢成为主流,目前大多数公司都采用分布式版本控制,git就属于分布式版本控制。
相较于集中式版本控制,分布式版本控制的仓库可以有很多份,在每个开发者的电脑上都存在git的完整仓库,这个完整的仓库记录git的所有提交历史。开发者可以直接在自己的电脑上对服务器中的代码进行提交、分支、合并、回退等操作。这样一来,任何协同工作使用的服务器发生故障,都可以很好的保存仓库。
git安装
-
官网地址:git-scm.com/
-
根据自己的操作系统进行下载安装git即可
git配置
-
配置用户名和邮箱(每次git提交都会使用这些信息)
git config --global user.name "用户名" git config --global user.email "邮箱" -
查看配置信息
git config --list
使用git
-
初始化git仓库
git init该命令会在项目文件里创建一个.git的文件,但是项目里面的文件还没被跟踪,仅仅做了一个初始化的操作。
-
从远程克隆仓库
git clone <远程仓库地址> -
文件状态
-
未跟踪 -----> 暂存
git add <文件名> #将某个文件切换到暂存状态 git add . #将所有已经修改的文件切换到暂存状态 -
暂存 -----> 未修改
git commit -m "提交信息" #提交暂存文件到仓库中 git commit -a -m "提交信息" #提交所有已修改文件 -
查看文件状态
git status -
忽略配置文件
在开发项目中,有些文件不需要使用git管理,例如:node_modules、/dist文件等,则可以使用.gitignore文件,在这个文件中列出不需要git管理的文件。
-
查看提交历史
git log git log --pretty=oneline git log --pretty=oneline --graph -
回到以前版本
git reset --hard HEAD^ git reset --hard HEAD~1000 git reset --hard commit idgit通过HEAD指针来记录当前版本,它指向当前分支的最后一次提交,回退到以前版本主要是改变HEAD指针指向。
远程仓库(Remote Repository)
在实际的项目开发过程中,通常需要多人协作开发,为了使仓库可以被多人同时访问使用,所以采用远程仓库。目前常用的远程仓库有:GitHub、Gitee
远程仓库的使用
-
查看远程仓库
git remote git remote -v -
添加远程仓库
git remote add <远程仓库名> <url> -
从远程仓库中拉取并自动合并
git pull #相当于(git fetch + git merge) -
推送到远程仓库
git push <远程仓库> <本地分支>:<远程分支>注意:如果推送失败,查看本地版本和远程版本是否保持一致
git标签tag
git可以给仓库中的某一个提交打上标签(tag),以示重要,例如:v1.0.0、v2.0.0等。设置标签后,可以通过标签实现版本回溯。
-
打上标签
git tag <标签名> -
查看所有标签
git tag -l -
附注标签
git tag -a <标签名> -m "附注标签" -
删除标签
git tag -d <标签名> -
检出标签
git checkout <标签名>
分支
git默认情况下只有一个分支(master/main),在使用git时可以创建多个分支,在不同分支上编写不同功能,分支与分支之间相互独立,在一个分支上修改代码不会影响到其它分支。
-
创建分支
git branch <分支名> -
查看分支
git branch -
切换分支
git switch <分支名> -
创建并切换分支
git switch -c <分支名> -
删除分支
git branch -d <分支名> -
合并分支
git merge <分支名>
变基(rebase)
在git中整合来自不同分支的修改主要有两种方法:merge和rebase。merge会记录所有git的提交历史记录,分支会变得错综复杂,而rebase可以简化历史记录,将两个分支的历史简化,但是永远不要在主分支上使用rebase。
变基前:
变基后: