版本控制软件:记录文件变化,以便将来查阅特定版本修订的文件
好处:
操作方便
易于比对
易于回溯
不易丢失
协作方便 : 基于版本控制软件提供的分支功能
分布式版本控制系统,典型代表:
GIT:直接记录快照,而非差异比较,近乎所有的操作都是本地执行
三个区域:
工作区、暂存区、GIT仓库
三种状态:
已修改 modified 工作区的文件修改了,还没放到暂存区就是已修改状态
已暂存 staged 文件已修改并放入暂存区,就属于已暂存状态
已提交 committed 如果Git仓库中保存着特定版本的文件,就属于已提交状态
GIT的工作流程:
1.在工作区中修改文件
2.将你想要下次提交的更改进行暂存
3.提交更新,找到暂存区的文件,将快照永久性的存储到GIT仓库
配置GIT:
# 配置用户信息:
git config --global user.name "xxx"
git config --global user.email "xxx@qq.com"
# 注意:--global选项,只运行一次,即可永久生效
# 全局配置文件记录在以下文件: c://Users/用户名文件夹/.gitconfig
# 检查配置信息:
## 查看所有的全局配置项 git config --list --global
## 查看指定的全局配置项 git config user.name git config user.email
# 要想打开git config命令的帮助手册
git help config
# 如果不想查看完整的手册使用-h选项
git config -h
获取仓库的两种方式:
1. 将尚未进行版本控制的本地目录转换为Git仓库
在项目目录中,打开git bash 执行git init命令将当前目录转为Git仓库
2.从其他服务器克隆一个已存在的Git仓库 git clone xxx.git
工作区中文件的4种状态,分为2大类:
- 未被Git管理:未跟踪,不被Git所管理的文件
- 已被Git管理:未修改、已修改、已暂存
git操作的终极结果,让工作区的文件都处于未修改的状态。
# 检查文件的状态
git status
# 以精简方式检查文件的状态-s short
git status -s
# 等价
git status --short
# 跟踪新文件
# git add 开始跟踪一个文件
git add index.html
# git commit提交更新 -m字符串描述
git commit -m "新建了index.html文件"
# 修改文件后,再执行一遍 git add index.html
git commit -m "xxxxx"
# 撤销对文件的修改, 危险性高,少用
git checkout -- index.html
# 向暂存区中一次增加多个文件
git add .
# 取消暂存的文件
# git reset HEAD 要移除的文件名
# 移除所有的用点号 git reset HEAD .
# 移除文件
## 从Git仓库和工作区中同时移除对应的文件
git rm -f index.js
## 只从Git仓库中移除对应的文件
git rm --cached index.css
跳过使用暂存区
标准流程:工作区-> 暂存区 -> Git仓库
简化流程:工作区->Git仓库
git commit -a -m "xxx"
忽略文件
创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式
查看提交历史
# 按照时间先后顺序列出所有提交历史,最近的提交排在上边
# q退出
git log
# 只展示最新的n条记录,
git log -2
# 在一行展示最近两条提交历史的信息
git log -2 --pretty=oneline
# 在一行上展示最近两条提交历史的信息,自定义输出格式
# %h 提交的简写哈希值 %an作者名字 %ar作者修订日期 %s提交说明
git log -2 --pretty=format:"%h | %an | %ar | %s"
回退到指定版本
# 在一行上显示所有的提交历史 git log --pretty=oneline # 使用git reset --hard命令,根据指定的提交ID回退到指定版本 git reset --hard <CommitID> # 在旧版本使用git reflog --pretty=oneline命令,查看命令操作的历史 git reflog --pretty=oneline # 再次根据最新的提交ID,调整到最新的版本 git reset --hard <CommitID>
小结:
初始化Git参考的命令: git init
查看文件状态的命令: git status 或者 git status -s
一次性将文件加入暂存区的命令 git add .
将暂存区的文件提交到Git仓库的命令 git commit -m "提交消息"
开源项目托管平台:主要有以下3个:
Github
Gitlab
Gitee
远程仓库的两种访问方式:
HTTPS : 零配置,需要重复输入账号密码
SSH:需要额外配置,但是配置后,每次访问,不需要重复输入账号密码
基于HTTPS(没有弄好,后续再看,主要用SSH方式):
# 如果本地没有创建仓库 echo "# blog" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/JianxiaoZhou/blog.git git push -u origin main # 如果本地已经存在了仓库 # 本地仓库和github进行连接 git remote add origin https://github.com/JianxiaoZhou/blog.git git branch -M main git push -u origin main
基于SSH方式
# 生成SSH key ssh-keygen -t rsa -C "2457856606@qq.com" # 连续敲击三次回车,即可在c:\user\用户文件夹\.ssh目录中生成id_rsa和id_rsa.pub两个文件 # 在githup网站配置SSHkey # 检测是否配置成功 ssh -T git@github.com # git add . git commit -m "描述" git remote add origin git@github.com:JianxiaoZhou/blog.git git branch -M main # 首次需要push -u , 后续直接git push 即可 git push -u origin main
远程仓库克隆到本地
git clone git@github.xxx/blog.git
Git分支:
多人协助中防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发。
master主分支:在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个master分支,通常叫做主分支,用来保存和记录整个项目已完成的功能代码。
功能分支:专门用来开发新功能的分支,从master主分支分叉出来的,开发且测试完毕后,最终合并到master主分支上。
查看分支列表:
git branch
*号表示当前所在分支。
创建新分支:
git branch 分支名称
注意:只会创建分支,不会切换分支
切换新分支:
git checkout 分支名称
分支的快速创建和切换(常用)
# -b表示创建一个新分支
# checkout表示切换到刚才新建的分支上
git checkout -b 分支名称
合并分支:
#1.切换到master分支
git checkout master
#2.在master分支上运行git merge命令将login分支的代码合并到master分支
git merge login
删除分支
git branch -d 分支名称
git branch -D 分支名称 强制删除
遇到冲突时的分支合并
打开包含冲突的文件,手动解决冲突之后,在执行如下的命令
git add .
git commit -m "解决了分支合并冲突的问题"
将分支推送到远程仓库
#-u表示本地分支和远程分支进行管理,在第一次推送的时候需要带-u参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称
git push -u origin payment:pay
如果希望远程分支名称和本地分支名称一致
git push -u origin payment
注意:第一次推送分支需要-u参数,此后可以直接使用git push
查看远程仓库中所有的分支列表
git remote show 远程仓库名称
跟踪分支
跟踪分支:从远程仓库中,把远程分支下载到本地仓库中
git checkout 远程分支的名称
git checkout pay
# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
git checkout -b payment origin
拉取远程分支的最新代码
#从远程仓库,拉取当前分支最新的代码
git pull
删除远程分支
git push 远程仓库名称 --delete 远程分支名称
git push origin --delete register