一、Git概述
Git 是一个免费的、开源的
分布式版本控制系统
,可以快速高效地处理从小型到大型的各种
项目。
Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作
流分支等特性。其性能优于
Subversion
、
CVS
、
Perforce
和
ClearCase
等版本控制工具。
二、Git 和代码托管中心
![](https://i-blog.csdnimg.cn/blog_migrate/e72aae6c463fc2bb10f277d05cc7ae02.png)
三、Git 常用命令
![](https://i-blog.csdnimg.cn/blog_migrate/e313c4df7a6481b64904cd41de5dcbd1.png)
本文 3.1-3.6章节将会基于Git Bush Here(Git提供的windows下的命令行工具)介绍Git的常用命令,如若不需要可直接跳至 本文的第六章 IDEA 集成 Git.
3.1 初始化本地库
1
)基本语法
git init
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/174fcd11cef617bde0e437d234009b48.png)
3)结果查看
![](https://i-blog.csdnimg.cn/blog_migrate/ab8e79463ab801cc74c05d51bda85dc2.png)
3.2 查看本地库状态
1)基本语法
git status
2
)案例实操
3.2.1 首次查看(工作区没有任何文件)
![](https://i-blog.csdnimg.cn/blog_migrate/fb4b03570172bda3b2f30b92ecafd293.png)
3.2.2 新增文件(hello.txt)
![](https://i-blog.csdnimg.cn/blog_migrate/818fbb2e48ee4c59ac3e3ce742f8f4ce.png)
3.2.3 再次查看(检测到未追踪的文件)
![](https://i-blog.csdnimg.cn/blog_migrate/00240de6a3c7e3cd436fbc19bf0f4426.png)
3.3 添加暂存区
3.3.1 将工作区的文件添加到暂存区
1
)基本语法
git
add
文件名
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/629f94f54e23ba62674fd69f45288382.png)
3.3.2 查看状态(检测到暂存区有新文件)
![](https://i-blog.csdnimg.cn/blog_migrate/49566d09c111f5ad673a13bfa03a854b.png)
3.4 提交本地库
3.4.1 将暂存区的文件提交到本地库
1
)基本语法
git
commit
-m "
日志信息
"
文件名
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/6e79faae09a30a7c6807430eb6b33eff.png)
3.4.2 查看状态(没有文件需要提交)
![](https://i-blog.csdnimg.cn/blog_migrate/8fe6dccec226dd5af9aa3ba10a37d39e.png)
3.5 修改文件(hello.txt)
![](https://i-blog.csdnimg.cn/blog_migrate/1508b4f6ff6e356115f4ce445f8870d6.png)
3.5.1 查看状态(检测到工作区有文件被修改)
![](https://i-blog.csdnimg.cn/blog_migrate/a06751f0d01e59f8dfc842c0e04e1a6b.png)
3.5.2 将修改的文件再次添加暂存区
![](https://i-blog.csdnimg.cn/blog_migrate/757cac053239950c1e6bb1698cd07c43.png)
3.5.3 查看状态(工作区的修改添加到了暂存区)
![](https://i-blog.csdnimg.cn/blog_migrate/52a336a2056ff870522cfd5423927216.png)
3.6 历史版本
3.6.1 查看历史版本
1
)基本语法
git reflog
查看版本信息
git log
查看版本详细信息
2
)案例实操
3.6.2 版本穿梭
1
)基本语法
git reset --hard
版本号
2
)案例实操
四、Git 分支操作
![](https://i-blog.csdnimg.cn/blog_migrate/e9ac0da284d68bcee047278a9f728379.png)
本文 4.1-4.7章节将会基于Git Bush Here(Git提供的windows下的命令行工具)介绍Git的常用命令,如若不需要可直接跳至 本文的第六章 IDEA 集成 Git.
4.1 查看分支
1
)基本语法
git branch -v
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/ad8a46c09e664d9acfbd9be32ba8a919.png)
4.2 创建分支
1
)基本语法
git branch
分支名
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/703ab7facfb93a3bd317aecbf2aab80d.png)
4.3 修改分支
![](https://i-blog.csdnimg.cn/blog_migrate/1f96ac7c33eac4c73eb409034c20c70c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/95b305e2c0ee9810651a9ba2b3d66548.png)
4.4 切换分支
1
)基本语法
git checkout
分支名
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/a5bbb17178fe231498ac699dc4db328d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/306d907562f8bce27df3d85af69747e7.png)
4.5 合并分支
1
)基本语法
git merge
分支名
2
)案例实操 在
master
分支上合并
hot-fix
分支
![](https://i-blog.csdnimg.cn/blog_migrate/8553ef96051152c994c6e5db10a28b2a.png)
4.6 合并分支,产生冲突
冲突产生的表现:后面状态为
MERGING
![](https://i-blog.csdnimg.cn/blog_migrate/5326e5c0a2244a134eb19d96da24df19.png)
冲突产生的原因:
合并分支时,两个分支在
同一个文件的同一个位置
有两套完全不同的修改。
Git
无法替
我们决定使用哪一个。必须
人为决定
新代码内容。
查看状态(检测到有文件有两处修改)
![](https://i-blog.csdnimg.cn/blog_migrate/447d80812dad49b4789c210c09161d06.png)
4.7 解决冲突
1
)编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:
<<<<<<< HEAD
当前分支的代码
=======
合并过来的代码
>>>>>>> hot-fix
2
)添加到暂存区
![](https://i-blog.csdnimg.cn/blog_migrate/1cec48d14f4830f9599da2ab0050a294.png)
3
)执行提交(注意:此时使用
git commit
命令时
不能带文件名
)
![](https://i-blog.csdnimg.cn/blog_migrate/0cd924cb8be67a57080a41bf494b0a30.png)
五、GitHub 操作
GitHub
网址:
https://github.com/
本文 5.1-5.6章节将会基于Git Bush Here(Git提供的windows下的命令行工具)介绍Git的常用命令,如若不需要可直接跳至 本文的第六章 IDEA 集成 Git.
5.1 创建远程仓库
![](https://i-blog.csdnimg.cn/blog_migrate/2fc69e85776993140c95b61c6073bb4e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/968973ca881678324e08770c921fc04a.png)
5.2 远程仓库操作
![](https://i-blog.csdnimg.cn/blog_migrate/aeef097b42a51ff525aded5548520c5e.png)
5.3 创建远程仓库别名
1
)基本语法
git remote -v
查看当前所有远程地址别名
git remote add
别名 远程地址
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/bbd243a3f2471b5412c2da28104811a2.png)
5.4 推送本地分支到远程仓库
1
)基本语法
git push
别名/URL路径 分支
2
)案例实操
第一次推送会弹出框(此时没有 凭证)
此时发现已将我们 master 分支上的内容推送到 GitHub 创建的远程仓库
![](https://i-blog.csdnimg.cn/blog_migrate/12a4a70cafa74f49fbaf06bd8e878dfe.png)
5.5 拉取远程库
1)基本语法(
将远程仓库对于分支最新内容拉下来后与 当前本地分支直接合并
)
git pull 远程库地址别名 远程分支名
5.6 克隆远程仓库到本地
1
)基本语法
git clone
远程地址
2
)案例实操
![](https://i-blog.csdnimg.cn/blog_migrate/d0d3191e82060b63b5ed81708300210c.png)
https://github.com/atguiguyueyue/git-shTest.git
这个地址为远程仓库地址,克隆结果:初始化本地仓库
![](https://i-blog.csdnimg.cn/blog_migrate/416adf452be206bcaca72a313628debe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a3af10ebf3fce3257da8dc9b893c8ae1.png)
小结:
clone
会做如下操作。
1
、拉取代码。
2
、初始化本地仓库。
3
、创建别名 (远程仓库默认别名为origin)
六、IDEA 集成 Git
6.1 定位 Git 程序
![](https://i-blog.csdnimg.cn/blog_migrate/87d2e89b5197986b3eec324754bf9f58.png)
6.2 初始化本地库
![](https://i-blog.csdnimg.cn/blog_migrate/427619c83ce0f4a3c536e2615b8783a3.png)
选择要创建
Git
本地仓库的工程。如本案例的 gitTest
![](https://i-blog.csdnimg.cn/blog_migrate/1e382f91882c903193477fbc23179bde.png)
6.3 添加到暂存区
右键点击项目选择
Git -> Add
将项目添加到暂存区。
![](https://i-blog.csdnimg.cn/blog_migrate/4687ee79f05dc9c2c04a65f1a50f72e6.png)
6.4 提交到本地库
![](https://i-blog.csdnimg.cn/blog_migrate/a967ff9f9676d0f52b2b54ddadd3ed94.png)
![](https://i-blog.csdnimg.cn/blog_migrate/faabdcb2ef90f92ee55664ba2bbaae24.png)
6.5 切换版本
右键选择要切换的版本,然后在菜单里点击 Checkout Revision。其中黄色的图标表示当前所处在的版本
![](https://i-blog.csdnimg.cn/blog_migrate/6de88d4779ea076bb0fdf7557af4d38c.png)
6.6 创建分支
方式一:New Branch
![](https://i-blog.csdnimg.cn/blog_migrate/642fed590ee08f9361cce2608f7fd5da.png)
然后输入分支的名称,点击Create
![](https://i-blog.csdnimg.cn/blog_migrate/2de60c83fad68684f0874d14b8b4df55.png)
方式二:鼠标左键点击要复制的分支,然后点击New Branch from Selected
![](https://i-blog.csdnimg.cn/blog_migrate/8ae6a71af21e0ec201be24bdebbf2bb5.png)
6.7 切换分支
选择对应的分支,鼠标点击左键,点击Checkout,切换到
相对应的
分支。
![](https://i-blog.csdnimg.cn/blog_migrate/1c082d9526db27efc5acf20f77b086d0.png)
6.8 合并分支
切换到要合并的分支,点击想要合并的分支,选择Merge into Current
本案例,将 hot-fix 分支合并到master 分支。首先切换到master分支,然后点击hot-fix分支,选择Merge into Current.
![](https://i-blog.csdnimg.cn/blog_migrate/5cddb7c660dcf93f0ff18aef12956f97.png)
如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动
提交本地库。
6.9 合并冲突,解决冲突
如图所示,如果
master
分支和
hot-fix
分支都修改了代码,在合并分支的时候就会发生
冲突。
![](https://i-blog.csdnimg.cn/blog_migrate/94236f0bb569684f5ad7921c4a6b5d2a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/724e645a790fc91bfb80964699c2e3a1.png)
我们现在站在 master 分支上合并 hot-fix 分支,就会发生代码冲突。
![](https://i-blog.csdnimg.cn/blog_migrate/7c17f76fc3cc1c5ef2133640e1bef600.png)
点击 Conflicts 框里的 Merge 按钮,进行手动合并代码。
![](https://i-blog.csdnimg.cn/blog_migrate/31f72fb0236f1358d73b026708bacdea.png)
手动合并完代码以后,点击右下角的 Apply 按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/ffeb5f7ce8e92a23a2af4d67cd594196.png)
代码冲突解决,自动提交本地库。
![](https://i-blog.csdnimg.cn/blog_migrate/b6e36a312e1a20b1e3ddd40ec0e09a24.png)
七、IDEA 集成 GitHub
7.1 设置 GitHub 账号
![](https://i-blog.csdnimg.cn/blog_migrate/53749857efaa3c35f81b8c94cc1f0008.png)
如果出现
401
等情况连接不上的,是因为网络原因,可以使用以下方式连接:
![](https://i-blog.csdnimg.cn/blog_migrate/9c5d373e80c072d7d958d6e02c36fcf0.png)
然后去
GitHub
账户上设置
token
。
![](https://i-blog.csdnimg.cn/blog_migrate/09ef3230461a03143372f9741207a3aa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5933db2632d79668588bef3c40836419.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a80740cd6367068250f3aae2119e388c.png)
点击生成
token
。
![](https://i-blog.csdnimg.cn/blog_migrate/1ae2c13a5d490784a98dddc40f5ab6e0.png)
复制红框中的字符串到
idea
中。
![](https://i-blog.csdnimg.cn/blog_migrate/8e2256dd3d79fbbb3e1f95707928319d.png)
点击登录。
![](https://i-blog.csdnimg.cn/blog_migrate/d611708db45204bf340016f9a21a0be3.png)
7.2 分享工程到 GitHub
![](https://i-blog.csdnimg.cn/blog_migrate/5bee0cbe155cd2cd4d0713e89a31cb4d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b609bad77d66a52c2190b655792d261.png)
成功后显示如下:
![](https://i-blog.csdnimg.cn/blog_migrate/cee20fc7ee72d9bf3a3e073569591cd8.png)
来到
GitHub
中发现已经帮我们创建好了
gitTest
的远程仓库。
![](https://i-blog.csdnimg.cn/blog_migrate/7d631661b102bcd2d3ab211f192d68fd.png)
7.3 push 推送本地库到远程库
右键点击项目,可以将当前分支的内容
push
到
GitHub
的远程仓库中。
![](https://i-blog.csdnimg.cn/blog_migrate/35c34371b79f792cfe1911ad4d8cd326.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c11c72f5aa41770d1cf71ea8061b562d.png)
注意:
push
是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,
push
的操作是会被拒绝的。也就是说,要想
push
成功,一定要保证本地库的版本要比远程
库的版本高!
因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地
代码的区别!如果本地的代码版本已经落后,切记要先
pull
拉取一下远程库的代码,将本地
代码更新到最新以后,然后再修改,提交,推送!
7.4 pull 拉取远程库到本地库
右键点击项目,可以将远程仓库的内容
pull
到本地仓库。
![](https://i-blog.csdnimg.cn/blog_migrate/8a70c9935e2987616e4c6fc085eeef90.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e2e5482d5b012c473d9ca80c6b429c2.png)
注意:
pull
是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动
合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
7.5 clone 克隆远程库到本地
首先,打开IDEA,点击Get from VCS
![](https://i-blog.csdnimg.cn/blog_migrate/a462987511f76e5bf064ddfa5f222e2f.png)
然后输入URL,点击Clone即可。
![](https://i-blog.csdnimg.cn/blog_migrate/9dccdaf01fca9f794f5069c46301c622.png)
八、IDEA 集成Gitee码云
8.1 IDEA 安装码云插件
Idea
默认不带码云插件,我们第一步要安装
Gitee
插件。
如图所示,在
Idea
插件商店搜索
Gitee
,然后点击右侧的
Install
按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/15f1a06dde94e6b9fb2ed59eff4eec8e.png)
Idea
链接码云和链接
GitHub
几乎一样,安装成功后,重启
Idea
。
然后在码云插件里面添加码云帐号,我们就可以用
Idea
连接码云了。
![](https://i-blog.csdnimg.cn/blog_migrate/b1e72147762b6669ef11eff8d67cf204.png)
8.2 将本地代码 push 到码云远程库
Idea
连接码云和连接
GitHub
几乎一样,首先在
Idea
里面创建一个工程,初始化
git
工
程,然后将代码添加到暂存区,提交到本地库,这些步骤上面已经讲过,此处不再赘述
push到远程码云库
自定义远程库链接。
![](https://i-blog.csdnimg.cn/blog_migrate/768f263d7e13013603ef01ab0494a587.png)
给远程库链接定义个
name
,然后再
URL
里面填入码云远程库的
HTTPS 链接即可。码云服务器在国内,用
HTTPS
链接即可,没必要用
SSH
免密链接。
![](https://i-blog.csdnimg.cn/blog_migrate/6784d626f99265c8b1654be1cfcc7fe2.png)
然后选择定义好的远程链接,点击
Push
即可。
![](https://i-blog.csdnimg.cn/blog_migrate/c4f9f62ba27a88b4bcbcb1bafc81252e.png)
看到提示就说明
Push
远程库成功。
![](https://i-blog.csdnimg.cn/blog_migrate/b27bde6724e9dcc36ac674b2d044de92.png)
去码云远程库查看代码。
![](https://i-blog.csdnimg.cn/blog_migrate/3d42b736b35e518b7e5619af0b24427a.png)
只要码云远程库链接定义好以后,对码云远程库进行
pull
和
clone
的操作和
Github
一
致,此处不再赘述。
8.3 码云复制 GitHub 项目
码云提供了直接复制
GitHub
项目的功能,方便我们做项目的迁移和下载。
具体操作如下:
新建仓库时,选择 导入已有仓库
![](https://i-blog.csdnimg.cn/blog_migrate/57d09b8f2cbb1b9c61bd3a8f80ad2e07.png)
将
GitHub
的远程库
HTTPS
链接复制过来,点击创建按钮即可。
![](https://i-blog.csdnimg.cn/blog_migrate/965f81082082e77ae55848c4ed183d66.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c20f65de3dd4fbb627af978916cca205.png)
如果
GitHub
项目更新了以后,在码云项目端可以手动重新同步,进行更新!
![](https://i-blog.csdnimg.cn/blog_migrate/df1a1e35c25228b2b9710c1edd773aac.png)
九、IDEA 集成 GitLab
1
)安装
GitLab
插件
![](https://i-blog.csdnimg.cn/blog_migrate/498b5676c3a8780f45988bd6b77ff41b.png)
新版插件如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0044f5c2d649265972903438df571571.png)
2
)设置
GitLab
插件
![](https://i-blog.csdnimg.cn/blog_migrate/d1277718213130e3c9264305b22c84d1.png)
添加 服务器主机名
![](https://i-blog.csdnimg.cn/blog_migrate/602eef61669dbb4563e15b441ffd7d45.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3bda1d84c162cd86a33178b75d0e6b3b.png)
3
)
push
本地代码到
GitLab
远程库
![](https://i-blog.csdnimg.cn/blog_migrate/015e8c34318f0c823d2f99a834d7bba7.png)
自定义远程连接
![](https://i-blog.csdnimg.cn/blog_migrate/e5cc4eedff3fd9f23b8ea0a2592e9649.png)
注意:
gitlab
网页上复制过来的连接是:
http://
gitlab.example.com
/root/git-test.git
,
需要手动修改为:
http:/
/gitlab-server
/root/git-test.git
选择
gitlab
远程连接,进行
push
。
![](https://i-blog.csdnimg.cn/blog_migrate/cd4aab4f84cae29fa3ba6cf62b70fa0f.png)
首次向连接
gitlab
,需要登录帐号和密码,用
root
帐号和我们修改的密码登录即可。
![](https://i-blog.csdnimg.cn/blog_migrate/16c6b5225ec70bdb6154be22776d5291.png)
代码
Push
成功。
![](https://i-blog.csdnimg.cn/blog_migrate/0cbb194cbe1884f39a1b5e7120fa0dc9.png)
只要
GitLab
的远程库连接定义好以后,对
GitLab
远程库进行
pull
和
clone
的操作和
Github
和码云一致,此处不再赘述。