Git教程【详解】

学习资料
学习建议
每个命令跟着敲一遍,有个大致的印象,会用即可。建议平时大家可以多把自己的代码使用 Git 命令上传到 GitHub 上,用的多了自然就熟悉了。
- 【尚硅谷】5h 打通 Git 全套教程丨 2021 最新 IDEA 版
在线学习
👉Learning Git Branching网站:https://learngitbranching.js.org/
🚗Git的基础知识
🕐什么是Git?
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。缔造者是大名鼎鼎的 林纳斯·托瓦茲 (Linus Torvalds) ,为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

🕑Git 项目包含三个主要组件
- 存储库
- 工作树
- 索引

🕒Git操作流程
- 代码提交和同步代码

- 代码撤销和撤销同步

🚓Git 安装
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。
在Linux上安装Git
首先,你可以试着输入git,看看系统有没有安装Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
如果你碰巧用Debian或Ubuntu Linux,通过一条就可以直接完成Git的安装,非常简单。
sudo apt-get install git
若用CentOs Linux,输入以下命令
sudo yum install git
在Mac OS X上安装Git
如果你正在使用Mac做开发,则需要安装homebrew,然后通过homebrew安装Git:
brew 的官方网站:http://brew.sh/ 在官方网站对brew的用法进行了详细的描述.
- 安装brew
在Mac中打开Termal: 输入命令:
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

- 安装git
$ brew install git

- brew卸载软件
$ brew uninstall git
在Windows上安装Git
- 下载git
👉👉👉git官网

点击后,进入如下界面:

- 安装git
1.双击进行安装

2.点击Next

3.选择安装地址,选好后点Next

4.选择安装组件

5.创建“开始菜单”文件夹,就是左下角Windows菜单文件夹名字,一般不用改,直接点击Next

6.编辑器选择,选择默认就行,点击Next

7.初始化分支命名,选择默认,点击Next

8.选择PATH环境

9.可执行文件选择,选择Git自带的,点击Next

10.传输方式选择,默认选择HTTPS方式,点击Next

11.配置行尾符号转换

12.终端模拟器的配置

13.git pull的时候应该做什么,选择默认就行

14.配置凭据助手,选择默认,点击Next

15.配置额外的选项,选择默认,点击Next

16.实验选项配置,选择默认(没有勾选),点击Install进行安装

17.安装完成,点击Finish

18.测试是否安装成功

19.进入Git Bash后,输入git --version 查看版本信息,若出现以下页面,则说明安装成功了

20.安装完成后,用户操作配置
设置用户签名📜
(1)名字配置
git config --global user.name "用户名"
(2)邮箱配置
git config --global user.email "真实邮箱"
(3)查看配置的名字与邮箱
git config --global --list

用户信息配置文件.gitconfig
(4)系统配置
git config --system --list

🚇Git命令
1️⃣初始化本地仓库
$ git init [加仓库名或者不加]
注:当追加了仓库名,会创建一个以仓库名命名的文件作为本地仓库;若不加,就以当前目录作为本地仓库。


创建仓库后会有一个.git文件

注:若要删除git本地库【.git】,命令为:
rm -rf .git
2️⃣查看本地状态
$ git status
No commits yet 表示空的git库

回顾知识
添加或者创建文件test.txt

vim编辑器中:yy表示复制,p表示粘贴,编辑用i,退出编辑按esc
键。

最后就是保存并退出:【:wq】
查看test.txt文件中的内容
$ cat test.txt

查看最后一行的内容
$ tail -n 1 test.txt

查看添加后的状态【红色状态代表没有被git追踪(未被添加到暂存区)】

3️⃣添加暂存区
添加指定的文件
$ git add test.txt
添加全部
$ git add .

注:Git自动把CRLF换行符【windows中】转换成LF【linux中】换行符
(warning: LF will be replaced by CRLF in test.txt.
)
添加到暂存区后的状态【绿色代表已经被git追踪(已添加到了暂存区中)】

若要从暂存区中删除test.txt文件
$ git rm --cached test.txt
注:该命令执行后只删除暂存区中的test.txt,而本地工作区不受影响。
4️⃣提交本地仓库
将暂存区中的文件提交到本地库
$ git commit -m "first commit" #提交全部
或
$ git commit -m "first commit" test.txt #提交test.txt

如果有以下提示信息,说明你还没有注册用户签名

查看提交后的状态

查看版本号【指针指向到master分支:版本号为5c7b5f5
】
$ git relog

查看详细的日志信息
$ git log

补充:
git log --pretty=oneline # 一行显示版本信息
git log 37d8f9a09f4587084a0ebc5fcb58aa76584d2dad # 会显示所有关于这个id以及之前的修改记录
git log 37d8f9a09f4587084a0ebc5fcb58aa76584d2dad -1 # 加上-1参数表示我们只想看到一行记录
git log 37d8f9a09f4587084a0ebc5fcb58aa76584d2dad -1 -p # 如果想要查看这条提交记录具体修改了什么内容,可以在命令中加入p参数
5️⃣项目更新后再提交
修改文件test.txt的内容
$ vim test.txt

查看修改后的状态

添加到暂存区并提交到本地库中


6️⃣版本穿梭【回退版本】
主要运用在于HEAD指针移动
$ git reset --hard 版本id # 回退版本

返回到原来的指针指向的位置

7️⃣分支【详细介绍】
8️⃣分支操作

分支【查看/创建/切换】
$ git branch v #查看
$ git branch 分支名 #创建分支
$ git checkout 分支名 #切换分支




分支(合并分支)【正常合并】
先切换到
主分支master
,然后将子分支
合并到主分支上。
$ git checkout master #切换到主分支master
$ git merge hot-fix # 将子分支hot-fix合并到主分支master上

查看日志信息

分支(合并分支)【冲突合并】



冲突合并,必须人为去更新代码内容

冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。查看状态(检测到有文件有两处修改)
修改后

提交到本地库

9️⃣团队协作机制
团队内协作场景

跨团队协作场景

✈github的应用
github官网:https://github.com/

首先需注册github账号,步骤如下:
(1)填写注册信息【略写】

(2)注册完后,进行登录

实践场景:
1.创建远程仓库
用户名weh163来测试一下,创建一个远程仓库test-01,步骤如下:


2.创建远程别名
(1)查看当前所有远程地址别名
$ git remote -v
(2)创建远程地址别名
$ git remote add 别名 远程地址
远程仓库地址如下:
方式一(HTTPS):
https://github.com/weh163/test-01.git
方式二(SSH):
git@github.com:weh163/test-01.git

实践运用:

3.将本地库推送到远程仓库
git push 别名 master
实践运用:
(1)第一种方式(2021年8月13日被禁用):
需注册windows凭据


提示2021年8月13日被禁用

(2)第二种方式(推荐):
注:必须用SSH格式的远程仓库地址
git@github.com:weh163/test-01.git
- 申请一个远程地址别名
git remote add 别名 仓库地址[ssh格式]
- 尝试推送到远程库[报错]
git push -u 别名 master
报错信息:

- 解决方式:申请一个ssh key
执行命令如下:
$ ssh-keygen -t rsa -C "邮箱名"
展示情况:

复制id_rsa.pub 文件的内容:

将id_rsa.pub中的内容填写到github中的Deploy keys,然后点击Add key。

最后就是推送到远程库:
$ git push -u 别名 master
成功推送情况:

github中页面显示:【在github中点击刷新】

4.拉取远程仓库到本地库
若远程仓库的内容被修改了,则本地库需要拉取远程库进行同步。
git pull 别名 master
实践运用:
- 本地库test.txt文件内容:

- 而远程库中的test.txt文件内容与本地库test.txt文件内容信息不一样。

- 执行命令,拉取远程库进行信息同步。

5.克隆远程仓库到本地库
公共库执行以下命令:
git clone 远程仓库地址[ssh格式]

模拟团队内协作
6.模拟两个同学进行团队内协作
测试:用2个账号来模拟两个同学进行团队内协作,信息表格如下:
账号 | 用户名 | 邮箱 |
---|---|---|
weh163 | 小魏 | weh163@163.com |
weh-coder | 小美 | weh-coder@163.com |
注:小魏作为该团队的组长,小美是该组的成员。
- 首先weh-coder【小美】需拉取远程库【之前weh163【小魏】所创建的远程仓库】
git clone 远程仓库地址[ssh格式]
小魏所创的远程库地址:git@github.com:weh163/test-01.git
- weh-coder【小美同学】修改内容

添加暂存区和提交到本地仓库之后,查看内容修改后的日志信息。

- 小美同学将本地库推送到远程库【小魏同学的仓库test-01】
$ git push origin master[或main]
出现报错信息【
weh-coder
小美没有权限】

解决方案:weh163【小魏同学】需要在他的远程仓库中把weh-coder[小美]添加到管理成员
(1)在github中邀请weh-coder[小美]加入进来

搜索用户名或者邮箱

复制该邀请链接

(2)weh-coder[小美]需接受weh163【小魏同学】的邀请
访问邀请链接【根据自己的访问链接来】:👉这是我的测试链接https://github.com/weh163/test-01/invitations

(3)weh-coder[小美]加入后,以下成功操作的情况

组员:

(4)小美同学可以成功把本地库推送到远程库【小魏同学的仓库test-01】
再执行以下命令:
$ git push origin master[或main]

小魏同学的仓库test-01发生改变

(5)weh-coder[小魏同学]审核了weh163[小美同学]提交的代码后将其拉取到本地库,结果显示[小美]本地库与[小魏]远程库的内容同步了。执行命令如下:
$ git pull 别名 master[或main] #第一次拉取
或
$ git pull #第二次拉取
模拟跨团队协作
7.模拟演示跨团队协作
准备3个账号,进行模拟演示
组名 | 账号 | 用户名 | 邮箱 |
---|---|---|---|
团队1(组长) | weh163 | 小魏 | weh163@163.com |
团队1 | weh-coder | 小美 | weh-coder@163.com |
团队2(合作伙伴) | kiteng-dev | 奇腾 | kiteng-dev@163.com |
github账号准备:



模拟场景步骤如下:
(1)kiteng-dev[奇腾]将weh163[小魏]的远程仓库test-01fork到奇腾
他自己的github中。
访问地址还是之前的[小魏]仓库地址:https://github.com/weh163/test-01.git


(2)kiteng-dev[奇腾]fork后的页面

(3)kiteng-dev[奇腾]进行修改fork后的远程仓库test-01中的内容:
原数据:

修改后的数据【步骤如下】:
- 步骤1:向test-01/test.txt中添加内容

- 步骤2:提交



- 步骤3:Pull requests




- 步骤4:weh163[小魏]进行审核kiteng-dev[奇腾]提送过来代码


- weh163[小魏]审核没问题后,就可以合并到自己主分支

- 回复对方kiteng-dev【奇腾】

- weh163[小魏]查看本仓库test-01/test.txt内容变化情况

🌌IDEA集成Github
(1)IDEA安装
访问链接:https://noob.itweh.cn/tools/dev/
安装步骤:👉链接https://noob.itweh.cn/java/java-base/java-base03.html
(2)配置git忽略文件【[可以随机命名].ignore】,我这里用git.ignore

# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
问题:为什么要忽略这些文件?
答:与项目的实际功能无关。不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之 间的差异。
(3)在.gitconfig文件中引用忽略配置文件(此文件在Windows环境下演示),需加以下内容:

[core]
excludesfile = C:/Users/主机名/git.ignore
(4)在IDEA中创建一个Maven工程【测试】


(5)IDEA中配置git环境
步骤1:

步骤2:

步骤3:

步骤4:

(5)用IDEA来创建git本地库


若要移除本地库【多学一招】


git标识出来了

文件爆红,说明本地库还未被追踪,需添加到暂存区中

创建一个Test.java来测试

(5)用IDEA将工作区的文件添加到暂存区(pom.xml文件发生变化,变绿了)

相当于git命令:
git add .[或选中的文件]

(6)用IDEA将暂存区的文件提交到本地仓库
步骤1:

步骤2:

相当于git命令:
git commit -m "first commit"

(7)修改代码,发现文件会变蓝

(8)修改后的代码,需重新进行添加到暂存区并提交到本地库

(9)切换版本【HEAD指针移动】
相关信息

或者






回到最新的版本

(10)创建分支



(11)切换分支

(12)合并分支【正常合并】
当前是hot-fix分支,修改Test.java代码



切换回master分支,然后将hot-fix分支合并到master分支




合并后

(12)合并分支【冲突合并】
hot-fix分支和master分支的内容都修改了,就会发生冲突
hot-fix分支下内容修改并提交

切换回master分支下内容修改并提交

进行冲突合并




合并成功后

然后再提交

(13)IDEA登录github
安装github插件(如果有该插件,可跳过)

登录github账号

1.第一种方式


跳转到授权页面,必需在浏览器上先登录github



IDEA中成功登录github账号

2.第二种方式,使用Token令牌登录



滑倒底部,点击Generate token




(14)IDEA将项目分享到github中,自动生成一个远程仓库。

填写github远程仓库名,别名,描述;最后点击share

分享成功后,会弹出提示框

github网站刷新后,可以看到该项目已被生成

(15)IDEA将项目推送到github中
首先,在Test.java中添加代码并提交到本地库


步骤1:

步骤2:

步骤3:获取仓库地址

步骤4:换一个别名【origin-test】

步骤5:

步骤6:【切换别名origin-test】

步骤7:push到github远程库

右下脚弹窗提示:成功push

github远程库与本地库同步成功

(16)远程库拉取【pull】到本地库【正常拉取】
远程库进行更新一下:添加一个文件README.md


然后执行pull


最后pull成功的情况如下:

(17)从github远程库克隆clone到本地
删库跑路


访问远程仓库地址:https://github.com/weh-coder/git-project.git
用SSH免密的方式来克隆

SSH格式的远程库地址:
$ git@github.com:weh-coder/git-project.git
然后用IDEA来clone远程库到本地


成功克隆显示

🛰gitee码云的运用
(1)注册gitee账号及登录
gitee官网:https://gitee.com/

注册页面

注册信息

登录页

(2)个人主页

(3)git本地库初始化

(4)在本地库创建一个test.txt


(5)test.txt添加到暂存区并提交

(6)创建远程仓库
- gitee创建远程仓库


复制远程仓库地址

(7)push到gitee远程库
添加别名,然后推送到远程库

注册windows凭据 【或者用SSH免密登录,方法跟github一样】
用户名:

密码:

电脑添加凭据


成功推送到远程库的提示

- IDEA来分享本地库,gitee自动生成远程库
(1)创建一个Maven工程


(2)IDEA初始化本地库

(3)IDEA将Maven工程添加到暂存区并提交到本地库



(4)IDEA登录gitee
安装gitee插件

IDEA登录gitee

登录邮箱必须与gitee一致


登录成功

(5)分享到gitee远程库


成功提示

刷新gitee个人主页,显示gitee-test远程库

(6)push到远程库
本地代码被修改并提交到本地库

push到远程库



push成功


(7)其他
pull操作和合并分支操作跟github的应用一样
🚢gitlab的运用
- gitlab的简介
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它使用Ruby语言写成。后来,一些部分用Go语言重写。截止2018年5月,该公司约有290名团队成员,以及2000多名开源贡献者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等组织使用。
GitLab官网:https://about.gitlab.com/

- gitlab的安装
(1)在虚拟机演示,首先需安装Docker容器
安装Docker的详细步骤请访问👉👉👉Docker详解
打开虚拟机

(2)安装gitlab
跟进中。。。。
⏳总结
学习了安装git
学习了git命令
Github模拟团队协作
IDEA集成Github
IDEA集成Gitee