Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种:
本地仓库:开发人员自己电脑上的Git仓库
远程仓库:远程服务器上的Git仓库
commit:提交,将本地文件和版本信息保存到本地仓库
push:推送,将本地仓库和版本信息上传到远程仓库
pull:拉取,将远程仓库文件和版本信息下载到本地仓库
Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
github(地址:https://github.com/),是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名gitHub
码云(地址:https://gitee.com/),是国内的一个代码托管平台,由于服务器在国内,所以相比GitHub,码云速度会更快
GitLab(地址:https://about.gitlab.com),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
BitBucket(地址:https://bitbucket.org/),是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户
当安装Git后首先要做的事情是设置用户名称和email地址,这是非常重要的,因为每次Git提交都会使用该用户信息。
在Git命令行中执行下面命令:
设置用户信息:
git config --global user.name "itcast"
git config --global user.email "[email protected]"
查看配置信息
git config --list
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
获取Git仓库通常有两种方式:
在本地初始化一个Git仓库(不常用)
从远程仓库克隆(常用)
在本地初始化Git仓库:
1.在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
2.进入这个目录中,点击右键打开Git bash窗口
3.执行命令git init
从远程仓库克隆:
注意:仓库不能嵌套,从远程仓库克隆不需要git init
git clone [远程Git仓库地址]
版本库: .git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
Git工作区中的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)
1)Unmodified 未修改状态
2)Modified 已修改状态
3)Staged 已暂存状态
注意:这些文件的状态会随着我们执行Git的命令发生变化
git status 查看文件状态
git add 将文件的修改加入暂存区
git reset 将暂存区的文件取消暂存或切换到指定版本
git commit 将暂存区的文件修改提交到版本库
git log 查看日志
以创建文件demo.txt为例:
①创建
②添加至暂存区
③查看文件状态
④取消demo.txt的暂存
⑤再次查看文件状态
⑥提交文件demo.txt
注意:必须要先将文件添加至暂存区才能提交
提交文件语法: git commit -m "描述" 文件名
⑦修改文件内容以后再次查看文件状态
注意:因为文件被修改而没有再次提交所以是红色modified
⑧ 再次提交文件
注意:再次将文件提交至暂存区,可以看见modified变为了绿色
⑨查看版本信息
⑩切换版本
语法:git reset --hard 版本号
注意:切换完版本可以观察文件内容是否对应改变
git remote 查看远程仓库
git remote add 添加远程仓库
git clone 从远程仓库克隆
git pull 从远程仓库拉取
git push 推送到远程仓库
①查看远程仓库
git remote
git remote -v 查看详细信息
②添加远程仓库
git remote add
添加远程仓库,运行 git remote add
③克隆远程仓库到本地
Git克隆的时该Git仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件
命令:git clone [url]
④推送至远程仓库
一定要先提交到本地仓库,才能推送到远程仓库
语法:git push [remote-name] [branch-name]
⑤从远程仓库拉取
命令:git pull [short-name] [branch-name]
git pull命令的作用是从远程仓库获取最新版本并合并到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories)
解决此问题可以在git pull命令后加入参数 --allow-unrelated-histories
分支是Git使用过程中非常重要的概念,使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init命令创建本地仓库时默认会创建一个master分支。
git branch 查看分支
git branch [name] 创建分支
git checkout [name] 切换分支
git push [shorName] [name] 推送至远程仓库分支
git merge [name] 合并分支
①查看分支
git branch 列出所有本地分支
git branch -f 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
②创建新的分支
git branch [name]
③切换分支
④推送至远程仓库
git push [shortName] [name]
⑤合并分支
git merge [name]
背景:在master分支上修改demo.txt文件,增添语句“在master下修改文件”
在fix分支上修改demo.txt文件,增添语句“在fix下修改文件”
然后在master分支上合并fix分支
产生合并分支冲突:
解决办法:
第一步:打开产生合并冲突的文件:demo.txt
第二步:手动处理文件
第三步:将处理好的文件提交
注意:手动处理好的文件需要提交,但是单个提交会报错“cannot do partial commit during a merge”,此时只需要在最后加上 -i 参数即可解决
第四步:推送至远程仓库
Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便地切换到标记时的状态。
比较有代表性的是人们会使用这个功能来标记发布节点(v1.0、v1.2等)
git tag 列出已有的标签
git tag [name] 创建标签
git push [shortName] [name] 将标签推送至远程仓库
git checkout -b [branch] [name] 检出标签
①创建标签
②列出已有的标签
③推送标签至远程仓库
④更新内容,再次推送标签
⑤检出标签
检出标签时需要新建一个分支来指向某个标签,检出标签的命令格式:
git checkout -b [branch] [name]
注意:标签是静态的,相当于快照。打好标签以后,文件的内容就定格了,不会随着后来的push内容而改变。
在IDEA中使用Git,本质上还是使用本地安装的Git软件,所以需要在IDEA中配置Git
在IDEA中使用Git获取仓库有两种方式:
本地初始化仓库
从远程仓库克隆
本地初始化仓库:
点击VCS--->创建Git仓库--->在弹出的路径中选择一个地方创建Git仓库
VCS是版本控制的意思
从远程仓库克隆:
方法一:VCS--->在GitHub上共享项目
方法二:Git--->克隆--->输入URL
将文件加入暂存区
将暂存区的文件提交到版本库
查看日志
将文件加入暂存区:
选中文件--->右键--->Git--->添加
将暂存区的文件提交到版本库:
选中文件--->右键--->Git--->提交
输入message,然后点提交即可
注意,也可以用快捷键:
√ 是提交,点击√自动加入暂存区并提交
查看日志:
点击“显示历史记录”的图标即可查看历史记录
查看远程仓库
添加远程仓库
推送至远程仓库
从远程仓库拉取
查看远程仓库:
选中项目--->右键--->Git--->管理远程
添加远程仓库:点击“+”可以添加一个远程仓库,点击“-” 可以断开本地仓库和远程仓库的联系
推送至远程仓库和拉取远程仓库:
点击↗即可推送,点击↙即可拉取
查看分支
创建分支
切换分支
将分支推送到远程仓库
合并分支
查看分支:
选中文件--->右键--->Git--->分支
也可以在IDEA右下角快速找到分支:
创建分支:
点击“+”:创建新分支
切换分支:
点击你需要切换到的分支,然后点击签出
将分支推送至远程库:
点击新建的分支,然后点击推送
合并分支:
Git部分到此结束~~