此课程会划分为10个小结进行讲述
- 1 安装和配置
- 2 创建仓库
- 3 基本用法
- 4 三种状态
- 5 标签 tag
- 6 分支 branch
- 7 合并分支
- 8 远程仓库
- 9 如何多人远程合作
git下载安装验证
一、下载、安装、验证
1、git官网:
https://git-scm.com/downloads
2、安装及配置
2-1 一路下一步
2-2 验证:在命令行输入
2-3 配置git config --global(全局)、查看配置git config --list
git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --list
码云配置方案:
git config --global user.name "gb_90"
git config --global user.email "13396492261@63.com"
git config --list
GitHub配置方案:
git config --global user.name "gb-heima"
git config --global user.email "754263923@qq.com"
git config --list
idea terminal设置(关键步骤):
查看版本:
3、在idea中初始化仓库 创建仓库(2种本地创建和远程拉取)
3-1 初始化仓库
方式1:进入目录git init
创建test1目录,进入test1执行git init:
mkdir test1
cd test1/
git init
方式2:git init 目录名
cd ..
git init test2
查看初始化仓库文件:
cd test2
ls -la
方式3,远程拉取
git clone +远程仓库地址(例如:https://github.com/biaoyansu/15.x.git)
git clone git@gitee.com:gb_90/gblfy.git
备注:远程项目重命名
git clone +远程仓库地址 + 项目新的名称
git clone git@gitee.com:gb_90/gblfy.git test3
这样就把远程仓库的名称更新为test3了,内容不改变
查看目录下的文件
windows:dir
dir
linux:ll 或者ls -a 显示所有文件包括隐藏
ls -la
二、基本用法:
1、编码设置:
提交信息编码
git config --global i18n.commitencoding utf-8
输出log输出的编码
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
查看设置的信息:
git config --list
2、查看仓库状态: git status
创建gblfy目录->>>j进入目录->>>初始化git仓库->>>查看仓库状态->>>未新增新文件
cd gblfy/
git init
git status
3、将所有修改添加到暂存区: git add .
创建gblfy目录->>>j进入目录->>>初始化git仓库->>>查看仓库状态->>>新增gblfy.txt新文件->>>添加内容”gblfy文件第一次提交,添加内容”
git add .
4、提交版本: git commit -am “描述内容”
git commit -m”gblfy文件第一次秀,添加内容”
5、查看版本记录: git log
git log
6、穿越到制定的历史节点 git checkout xxx
在gblfy.txt->>>添加”穿越历史节点第一次测试”->>>将gblfy.txt添加至暂存区->>>将gblfy.txt从至暂存区提交到本地仓库
git add .
git commit -m”穿越历史节点,第一次测试”
查看提交的记录:
git log
穿越历史节点前:
git checkout 5db6e7c9
穿越历史节点后:
备注:制作后悔药流程(3步走)
1、修改内容
2、git add . 将本次修改的文件,添加至暂存区
3、git commit -am"本次修改的文件内容"
git add . git commit -m”演示制作互殴会要流程3步走”
回到刚才编辑的版本 git checkout -
git checkout -
三种状态
modified已修改
stated已暂存
commited已提交
1、git节点组成基本3个阶段:
modify(修改文件)
git add . 添加到暂存区
git commit -am “描述提交内容”
案例:
在gblfy.txt 文件中+A
查看文件状态:
git status
将文件添加至暂存区
git add .
将gblfy.txt(新增A)文件提交到本地仓库:
git commit -m”gblfy.txt文件+A测试”
3、查看版本记录+修改的内容 git log -p
git add .
git commit -m”gblfy.txt文件 add ABCD”
4、案例——对于一个文件修改多次:
例如:新建1.txt->>>>在1.txt中,添加了A ->>>>将A添加至暂存区:
touch 1.txt
git add 1.txt
git add 1.txt 在未提交之前,又添加了B
进行提交:
git commit -m”未提交之前,添加B仓库只有A,没有B”
这种情况,仓库里git add 1.txt中只有内容A,原因是,添加B操作后,没有将B添加到暂存区
之后,又一次添加了C 和D
git status
针对一个文件修改多次这种情况,可以依次添加到暂存区,最后,一起提交:
git commit -m”将BCD添加至暂存区,一起提交”
总结:后悔药要经过3个阶段
modify(修改文件)
git add . 添加到暂存区
git commit -am “描述提交内容”
四、标签tag
新建test目->>>初始化git本地仓库->>>新建2.txt->>>将添加暂存区->>>并提交到本地仓库:
mkdir test
cd test/
git init
touch 2.txt
git add .
git commit -m”初始化仓库”
1、查看版本信息前一条信息:git log --oneline --decorate
git log --oneline --decorate
附注标签:
git tag -a 标签名 -m “备注”
git tag -a v1.0 -m”第一版完成”
2、列出所有标签(git tag)
git log --oneline
git tag
3、打标签一般以最近的节点打标签,如果选择一个历史节点打标签操作如下:
案例演示1:
提交3次,第一次和第三次分别建立标签v1.0 v2.0,这是情况是:
提交3次
有v1.0 v2.0 二个标签
进行以下操作:
在v2.0节点上,回到第二次提交的节点(通过id号),建立标签,之后,返回v2.0节点,查看所有标签
有v1.0 v1.5 v2.0 三个标签
在上面的第一个标签的基础上开始演示:
第一步:在test本地仓库下2.txt文件中添加”开始写第二版书籍”内容
第二步:将2.txt文件添加在暂存区,并提交到本地仓库
git add .
git commit -m”测试穿越历史节点添加标签01”
第三步:在test本地仓库下2.txt文件中添加”第二版书籍中期”内容
第四步:将2.txt文件添加在暂存区,并提交到本地仓库:
git add .
git commit -m”测试穿越历史节点添加标签02”
第五步:在第三次提交的基础上,建立标签v2.0
git tag -a v2.0 -m”在第二版中期,新建标签v2..0”
查看所有标签:
git tag
查看历史记录
git log --oneline
第六步:回到9834743节点
git checkout 9834743
回到9834743节点后,的文件显示的内容
第七步:在9834743节点上新增标签v1.5
git tag -a v1.5 -m”在第二版中期,回到9834743这个历史节点的新增标签v1.5”
第八步:回到v2.0节点
git checkout cd3bfe
回到v2.0节点后文件显示的内容:
查看所有标签:
git tag
案例完成!!!
简单方法:
git tag -a 标签 -am “描述阶段内容” +历史节点号
例如:
git tag -a v0.5 -m”历史节点添加tag” 801be2a
案例演示2:
在上面基础上,提交两次:
git add .
git commit -m”给历史节点添加标签01”
git add .
git commit -m “给历史节点添加标签02”
git tag -a v3.0 -m”测试穿越历史节点添加标签03”
git log --oneline
git tag -a v2.5 -m”给历史节点添加tag” ac1f4be
git log --oneline
列出所有tag:
git tag
4、查看某个标签的详细信息:git show 标签名
git show v2.0
5、回溯至标签所在的提交:git checkout 标签名
查看有哪些标签和现在所在标签:
git tag
git checkout v2.0
五、分支branch(默认分支master)
就是在主分支master上面,分出的几条分支。
例如:一本书,主线是主人公不是富有的,在主线上分出一条故事剧情发展线,主人公变更富有的。
分支名称可以自定义,就好像在不同分支平行的事件,可以随意切换,非常方便。
git init test
cd test/
touch gblfy.txt
git add .
git commit -m”第一章”
git add .
git commit -m”第二章”
现在master节点有2个节点
查看有哪些节点?
git log --oneline
git add .
git commit -m”主人公not rich”
提交之后查看节点:
git log --oneline
创建分支:git branch 分支名:
git checkout rich
git log --oneline --all
git add .
git commit -m”在rich分支上修改gblfy.txt”
git log --oneline --all
git add .
git commit -m”rich主人公+美女”
git log --oneline --all
在rich节点上,切换到master,回到开始分支出来的master节点:
git checkout master
git add .
git commit -m”在master上故事情节继续发展”
在master上有4个节点,也就是4个版本:
git log --oneline
显示所有历史记录:git log --all
图示全部历史记录(建议使用,如下图所示):git log --oneline --graph --all
git log --oneline --graph --all
分支有什么用?
比如开发一个应用,在master分支上开发了v1 v2 v3 v4个版本,在v2版本上觉得一周之后可以上线了,上线后发现在v2版本上有一个bug,但是在master主线上,已经开发到v4版本,在v4版本上开发新的功能了,这时应该怎么办?
分支就可以解决这个问题,通过git命令切换到v2版本,在v2版本master节点上,建立一个分支专门修复bug,当分支上bug修复好了,在回到master节点的v4版本继续开发,等开发完成,最后,合并分支,这样新功能开发完成了,bug也修复好了。
六、合并分支branch(默认分支master)
git init test
cd test/
touch gblfy.txt
git commit -m”第1个版本”
git add .
git commit -m”第2个版本”
git tag -a v1 -m”第一个标签”
git add .
git commit -m”第3个版本”
git log --oneline --graph --all
git checkout 62b6676
git log --oneline --graph --all
在v1版本上创建分支:git branch 分支名
也可以,创建并切换到创建的分支:git checkout -b 分支名:
git checkout -b helper
git add .
git commit -m”fix”
回到master分支:
git checkout master
git add .
git commit -m”4”
git log --oneline --graph --all
现在的情况是,在helper分支上bug已经修复了,但是在master节点上,还没有合并分支。
原则是:在上线新版本之前合并分支,修复bug
合并分支:git merge 分支名
将分支合并到当前节点上
git merge helper
解决冲突,根据需求来就可以。
git add .
git commit -m”merged master + helper”
git log --oneline --graph --all
七、远程分支
版本控制(git仓库)放在本地有一定的风险性,在远程仓库创建一个版本控制(git仓库)。
例如:本地(local)git仓库也有4个版本,将本地仓库的4个版本推送到远程(remote)git仓库,这样本地仓库和远程仓库都有4个版本。
假设1:在本地新增第5个版本,只需要把第5个版本推送到远程分支上即可(不需要把整个项目重新进行再次推送)。
假设2:本地这台电脑的仓库挂了,换一台电脑直接从remote仓库,将代码进行拉取即可。
案例演示:
git init test
cd test/
touch gb.txt
git add .
git commit -m”本地file推送remote测试01”
git log
下一步找一个remote仓库进行推送:
码云进行演示:
登录马云:
登录github,新建一个仓库,(原理和本地一样,新建一个仓库,并进行初始化)
添加远程仓库:git remote add 远程名称 远程地址
git remote add mayun git@gitee.com:gb_90/test.git
这样本地仓库和远程仓库就建立好连接了
列出所有远程仓库:git remote
这样就会把本地仓库连接的所有远程仓库都列出来
git remote
如果需要详细信息,执行命令:git remote -v
git remote -v
fetch指的是:代码拉取(下载)地址
push指的是:代码推送(上传)地址
一般个人就是一个地址
上传代码:git push -u 远程名 分支名
git push -u mayun master
git push 推送
-u:就是在服务器端设置如果下一次有人想把这代码推送,应该推送到哪一个分支上去合并,因此推送代码后面要加-u,避免以后往下拉取代码出问题。
执行命令后,报错 提交失败,意思是,你可能是第一次提交,在执行git push 之前,先要执行,git pull
git pull
问题现象:在执行git pull的时候,提示当前branch没有跟踪信息:
解决方案:
比如说要操作master吧,一种是直接指定远程master:
格式:git pull 远程名称分支
例如:
git pull mayun master
git pull origin master
git pull
发生报错:我们拒绝,因为你当前的分支是比较落后,也就是说,当前创建的分支,没有远程的分支新,现象是这样的。下面进行强制推送-
git push -u -f origin master 强制推送代码,把matser进行覆盖
git push -u -f mayun master
2、已经成功了,将本地代码推送到远程仓库
3、登录远程,进行验证
4、git branch 查看本地分支
git branch -r 查看远程分支
git banch -r
git branch
再次测试验证:
touch 1.txt
git add 1.txt
git commit -m”本地代码推送remote测试02”
git push -u mayun master
验证成功!!!
本地仓库删除,从远程拉取代演示:
克隆(拷贝)仓库:git clone 仓库地址
git clone git@gitee.com:gb_90/test.git
cd test/
git log --oneline --all
如果使用git clone 链接 这个克隆命令
他会默认为将远程仓库设置为你克隆的地址,不需要你再去设置。代码拉取的地址
git remote
注:不是mayun对吗?默认远程仓库名称:origin,刚才咱们自己定义的mayun对吧,这个名称可以自定义
git remote -v
touch 2.txt
git add 2.txt
git commit -m”local-->>>>>remote03”
如果继续使用,mayun就会出错
git push -u mayun master
可以查看远程名称
git remote
把remote名称修改为默认的origin即可:
git push -u origin master
八、多人远程操作(重点)
案例演示:
本地设定2个人,gb,ly,在idea开2个终端进行模拟
gb先从remote拉取仓库代码
git clone mayun git@gitee.com:gb_90/gblfy.git gb
ly从remote拉取仓库代码:
git clone mayun git@gitee.com:gb_90/gblfy.git gb
gb ly分别进入仓库:
cd gb/
cd ly/
gb创建1.txt:
touch 1.txt
添加至暂存区,提交到本地仓库:
git add 1.txt
git commit -m”第一个版本”
情景1:gb创建文件---->>>>>添加至暂存区---->>>>>
提交到本地仓库。这时ly本地仓库是没有的,因为gb还没有将本地的仓库的代码推送到remote仓库。
将本地仓库代码---->>>>>推送到remote仓库
git push -u origin master
查看remote:
查看提交记录:
代码已经同步完成!!!
情景2:这时ly本地仓库中仍然没有,remote仓库中的最新代码
获取远程更新:git pull 意思是拉取、下载
git pull
这样gb ly 2个仓库的代码就同步了!!!!
git add 1.txt
git commit -m”第2个版本”
git push -u -origin master
查看具体提交信息:
git pull
git add .
git commit -m”第3个版本”
git push -u origin master
git add .
git commit -m””
未从remote拉取最新代码,对内容进行修改,会报以下异常:
git push -u origin master
解决方案:
git pull
git add .
git push -u origin master
git pull
git pull命令就相当于git fetch && git merge
git fetch只是把代码拉取到本地,放置到已提交状态下。
首先gbly是gb更新一次,上传remote
ly从remote将代码拉取到本地,修改后