Git学习
1、Git是什么
Git(分布式版本控制系统)是一款用于控制代码版本的工具,便于开发人员更好地去管理代码和协同开发。
2、Git的构成
- 工作区:用于存放编写的代码。
- 暂存区:用于存储每个时间顶点的代码。
- 本地仓库:用于存储每个时间段的代码。
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925213409202-1896896561.png)
3、Git常用命令(增删改查)
3.0 环境配置
- 需要配置用户名和用户邮箱,用于提交代码时,可以知道是谁提交的。
# 查看当前的配置信息
git config list
# 设置用户信息
git config --global user.name "BaiYun"
git config --global user.email "baiyun_it@163.com"
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926194123967-1612422333.png)
3.1 初始化工作区
git init
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925222133530-1943856274.png)
3.2 查看文件的状态(查)
git status
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925222454685-332703684.png)
3.3 添加到暂存区(增)
git add 指定文件名
eg:git add HelloGit.java
git add . // 添加当前目录下的所有文件到暂存区
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925222941199-2144481635.png)
3.4 添加到本地仓库(增)
git commit -m '对内容进行描述'
eg:git commit -m 'Add HelloGit'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925224001121-1768143208.png)
3.5 add和commit合起来使用(增)
- 使用以下命令,即可以同时完成添加到暂存区和添加到本地仓库操作。
git commit -am '对内容进行描述'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925224737084-1976870179.png)
- 注意:第一次时,需要使用
git add '文件名'
添加到暂存区;在后面对该文件进行更改时,才可以使用git commit -am
进行添加。
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925225255857-282191903.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925225400100-327838212.png)
3.6 查看历史版本(查)
git log 或 git reflog
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925230338750-1396647928.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925230406061-1889488874.png)
3.7 回退到指定版本(改)
git reset --hard 指定版本号
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925232909949-137250498.png)
3.8 忽略指定文件推送到仓库
- 需要对某一些文件进行忽略管理时,可以创建
.gitignore
文件(文件名固定),在里面添加需要被忽略的文件类型即可。一般需要被忽略的文件有:日志文件
,.class
,临时文件等
# 所有以.class结尾的文件都会被git忽略
*.class
# !取反,不会被忽略
!Student.java
# TODO文件会被忽略
/TODO
# build/目录下的所有文件都忽略
build/
# doc目录下的,以.txt结尾的文件都会被忽略
doc/*.txt
# doc目录下的子目录,子子目录,以.txt结尾的都会被忽略
doc/**/*.txt
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925233055682-955168573.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925232819159-1826677587.png)
3.9 删除本地仓库文件(删)
git rm 文件名
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925233414346-1562751590.png)
3.10 克隆远程仓库(增)
- 创建一个文件夹,用于存放clone下来的仓库。
git clone '远程仓库地址'
eg:git clone 'https://gitee.com/white-clouds/enroute.git'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925234246446-913727626.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200925234303265-925987087.png)
3.11 查看远程仓库(查)
git remote
git remore -v
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926085804798-1731181286.png)
3.12 创建远程仓库(码云)
- 将代码提交到远程仓库,即可以与小伙伴协同开发啦。
- 添加仓库开发者
3.13 使本地仓库与远程仓库建立关联
git remote add origin 远程地址
eg:git remote add origin https://gitee.com/white-clouds/test-02.git
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926090028559-658483560.png)
3.13 移除远程仓库(删)
git remote rm
eg:git remote rm origin
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926090102975-151134986.png)
3.14 从远程仓库中拉取(改)
git pull origin master
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926090133976-1331330532.png)
3.15 推送到远程仓库(增)
# 添加到暂存区
git add .
# 添加到本地仓库
git commit -m '描述'
# 推送到远程仓库
git push
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926090220684-1541022933.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926090311573-1206140739.png)
4、Git分支
-
什么是分支?即从主线上分离出来,在分支上的操作,不会影响到主线上。就像树一样,树枝的好坏,对树根不会产生太大的影响,只有树根坏了,整棵树也就枯萎了。
-
分支的应用:在实际项目中,我们需要对项目进行扩展升级时,就需要对原先的代码进行改动,在改动的过程中避免不了出现bug的时候,也有可能会对原先的项目产生不必要的影响,所以我们需要使用分支,将主线copy一份出来,在此基础上进行扩展升级,当调试好之后,再将分支整合到主线上,就可以有效避免影响主线的运行。
4.1 分支的查看(查)
# 查看本地仓库分支
git branch
# 查看远程仓库分支
git branch -l
# 查看本地与远程仓库分支
git branch -a
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150156169-2134270263.png)
4.2 分支的创建(增)
git branch '分支名'
eg:git branch branch-01
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150237392-1304212337.png)
4.3 分支的切换(改)
git checkout '分支名'
eg:checkout 'branch-01'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150337487-521025283.png)
4.4 分支的删除(删)
- 注意:需要先切换到其他分支上,才可以删除分支。
git branch -d '分支名'
eg:git branch -d 'branch-01'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150405252-17858401.png)
4.5 将分支推送到远程仓库
git push origin '分支名'
eg:git push origin 'branch-01'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150430417-679265069.png)
4.6 合并分支
git merge '分支名'
eg:git merge 'branch-01'
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150452258-327747756.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150503000-292699211.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150516764-112735423.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926150530741-829762809.png)
5、IDEA中使用Git
- IDEA版本:2020.2.1
5.1 IDEA中配置Git
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154346925-1059867595.png)
5.2 从远程仓库中,将项目拉取下来
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154537855-1828637188.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154634294-823564139.png)
5.3 将IDEA中的工程添加到Git中
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154705507-1600769216.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154719117-5779223.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154724995-1525082413.png)
5.4 添加忽略文件.gitignore
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154754285-46871367.png)
5.5 将代码添加到暂存区
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154858878-1005117258.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154904723-17715821.png)
5.6 将代码提交到本地仓库
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926154948939-858315978.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926155003745-209785912.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926155620264-1652263161.png)
5.7 将代码推送到远程仓库
- 在码云上,创建新的仓库,用来存放本地新仓库。
5.8 版本查看
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161218161-873725308.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161223770-395298545.png)
5.9 创建分支
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161312202-1649568801.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161318021-1810985294.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161329008-455592101.png)
5.10 切换分支
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161343248-1180383944.png)
![](https://img2020.cnblogs.com/blog/1712406/202009/1712406-20200926161350114-1680354887.png)
5.11 合并分支
- 主线
- 分支
- 合并
- 合并后,切换到主线,再次推送
ps:如有不足之处,请指出。我们共同进步。