1. 什么是Git
- 世界上最先进的分布式版本控制系统
- Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件
1.1 GIt的作用
- 协同开发
- 版本记录
- 冲突解决
- 历史追查
- 代码备份
- 版本还原
- 权限管理
- 分支管理
- 代码审查
- …
2. Git的安装
-
修改安装路径后,一路next即可
3. TortoiseGit 的安装
-
先下载语言包和TortoiseGit的安装包
在这里插入图片描述
安装TortoiseGit的安装包
-
一路 Next 即可,配置均选择默认
安装 语言包
- 双击即可安装
配置汉化
-
语言包和安装包都安装后。在桌面右键,选择Settings
-
General > language
4. 配置git签名
-
选择你要作为git工程存放的目录,右键,选择
git bash here
-
git是一个分布式管理工具,需要用户名和邮箱,作为一个标志
git config --global user.name "wzc" git config --global user.email "zichao412@163.com"
-
注意:邮箱的是集合周,和你在github上的邮箱要一致
-
5. 创建版本库
-
选择你要作为git工程存放的目录
-
初始化版本库
git init # Initialized empty Git repository in [你的版本库路径]
-
有了版本库后,它会显示你当前的分支状态
6. git命令行
6.1查看文件状态
git status
6.2 暂存区【重点】
git add [文件名/目录名]
-
作用:
- 用于跟踪文件,或整个目录
- 将文件,或者目录,加入到一个临时的暂存区 (缓存)
-
使用git add后,可以使用将status查看状态
-
小技巧:可以添加整个目录到暂存区,就不用单个文件的添加了
6.3 提交文件【重点】
git commit
-
git add
只是把文件提交到暂存区 (相当于本地缓存),并没有把文件真正的提交 -
使用
git commit
能将文件提交到版本库中(相当于提交到了本地Git仓库中) -
git commit
是将暂存区的所有文件,提交到了版本库中 -
git commit
后,会进入一个 vim编辑器的界面。(和Linux上的操作一样) -
在这个编辑界面中,编写你对此次提交的信息
-
编辑好后,
ECS
,:wq
即可 -
提交成功:
-
你也可以,一步到位
git commit -m "提交信息"
6.4 文件修改后,如何做?
当我们对上传到版本库(本地git仓库) 中的文件做出了修改,那该如何做到更新呢?和之前的流程一样
-
git status
,先查看哪些文件被改变 -
git commit
,将修改后的文件重新添加到暂存区 -
git commit -m
,将暂存区中更新的文件提交到本地的git仓库
6.5 查看日志
git log
-
我们可以查看详细的版本提交信息(提交历史记录)
- 我们可以看大,我们一共提交了两个版本
git log --pretty=oneline
-
这个语句,也是查看历史记录。但是嫩给你一个简化版本的记录:
6.6 回退历史
-
创建一个 test/2.txt文件,并且输入内容:“I LOVE CHINA”
-
然后上传到本地版本库
cd test/ # 创建文件夹,并且编辑内容 vim 2.txt # 添加到暂存区 git add 2.txt # 提交到版本库 git commit -m "添加一个txt文件 --03"
-
查看历史记录,发现添加成功
-
修改该文件的内容,并且提交到版本库 ( 随便修改文件内容 )
vim 2.txt # 提交到版本库 git add 2.txt git commit -m "修改2.txt文件 --04"
查看历史记录,修改成功:
6.6.1 重点!!!
后来发现修改错误,想要回到修改前的版本!!!
-
回到上一次的提交
git reset --hard HEAD^1
-
HEAD
:- HEAD是一个指针,永远指向最新版本
- ^1 ,表示让 HEAD指针指向上一个版本
-
git reset
:用来修改 HEAD的位置 -
参数:
--hard
:【硬】,版本回退后,该版本立即变为最新版本!!! 不可复原--soft
:【软】,回退版本,但是会保存改动的记录(会自动帮你git add )--mix
:【折中】回退版本,并且保留所有改动记录。(不会自动 git add )
-
-
理解图:
# 回退到2个版本 git reset --hard HEAD^1
-
查看历史版本号!!
git reflog
-
删除上一个版本:
git reset --hard HEAD^1 # 使用序列号回复 git reset --hard 7664f01
6.7 还原文件
git checkout + [/文件名]
-
git checkout
对版本库中的文件进行标记 -
无论你在 怎么修改,再使用
git checkout
命令,将回到被标记的状态
6.8 删除文件
本地删除文件后,并不代表是真正删除文件
- 举例:在test文件夹中,删除新建文件 3.txt
- 删除文件后,我们需要将删除的记录提交到版本库
# 我们要将删除文件的记录提交到版本库中
git add test/
git commit -m "删除了文件3.txt"
-
这样就完成了删除
-
(但是还是可以通过:
git reset --hard
,命令还原)
7. 工作区、暂存区、本地库
7.1 基本概念
- 工作区:
- working Directory,指电脑本地,包含
.git
隐藏文件的地方z
- working Directory,指电脑本地,包含
- 暂存区:
- stage,存储在
.git
目录下的index文件
- 类似于缓存,有时候也叫索引
- stage,存储在
- 本地库:
- Repository,工作区中,有一个
.git
,它就是git的本地仓库 - 相当于一个在你电脑上的本地git仓库
- Repository,工作区中,有一个
7.2 关系图
8 分支
场景:项目上线运行,但是又有了新的需求,并且项目还要一致上线运行。平时还要修改一些bug,如何管理呢?
- 已经上线的项目:主分支
- 修改bug:分支
- 添加新需求:分支
分支和分支之间互补影响!!!
8.1 查看分支
git branch -v
8.2 创建分支
git branch + [分支名
-
创建分支,是从主分支中复制的一条分支,内容一模一样
-
但是分支修改和主分支是独立的,互不干扰
8.3 切换分支
git checkout + [分支名]
8.4 合并分支
git checkout master
git merge + [分支名]
- 要合并分支,必须使用
git checkout master
切换到主分支
8.5 分支冲突【重点】
当两个分支中,相同文件,出现内容不一样时。在合并时,会出现冲突。
-
什么是冲突?
指同一个文件,同一个位置的代码,再两个版本的仓库合并时,版本软件无法判断应该保留哪一个版本。因此会提示该文件发生冲突,冲突一般都需要程序员手动解决
-
分之合并时,解决冲突
-
先在master分支上,创建一个 **conflict.txt **文件
-
再在 bugTest分支上创建一个 conflict.txt 文件
-
然后分别提交(两文件的内容不同)
-
最后合并(100%有冲突)
-
-
解决冲突【重点】
-
产看当前发生的冲突
git diff
-
解决冲突:
-
查看冲突文件
vim onflict.txt
-
手动决定你要保留的部分
- 直接删除多余,或不需要的部分
-
解决冲突后,执行add、commit到版本库就行了
-
-
9. gitHub
- 是一个git项目的托管网站,主要基于git的版本托管服务
9.1 推送代码到github
-
将本地仓库的代码,推送到 git远程仓库中
-
绑定远程推送地址:
git remote add [远端代号] [url]
- 远端代号:指的是远程链接的代号,一般用origin,也可以指定以
- url:
- http:基于互联网
- ssh:基于局域网
-
推送代码:
git push [远端代号] [分支名] # 比如,推送到主分支 git push origin master
-
9.2 从github上克隆项目
-
从Github上克隆
git clone [url] [目录名]
- 目录名可省略,省略后默认使用 github的仓库名
-
修改文件后:
- 先试用git add、git commit 将修改后的文件提交到本地版本库中
- 然后推送到 git远程仓库
git push origin master
注意!! 你直接推送到源项目上,需要该项目的拥有者开放权限!!不然你克隆的项目是无法推送你的修改
9.3 注意事项:
-
每次开始写项目之前,都要和远程仓库进行代码同步更新
# origin可以自定义,但是我们一般用origin git pull origin [分支名]
10. 协作冲突
两个账户都向 github上提交代码,相同文件,内容修改不同。在提交时,会产生冲突。需要手动解决
解决方式:
-
产生冲突后
-
修改合并冲突文件:
-
先和远程仓库(github上的仓库) 同步(会报错 ! ! !)
git pull origin master
-
报错之后,vim 去修改冲突的这个文件
-
-
git add
-
git commit
11. 第三方协作产生冲突
在上一节,我们讲了协作冲突,是多个人在一个github仓库中进行协同合作,完成项目。在真实的开发中,还可能遇到另外一种情况:
使用第三方协作开发来完成项目。就是指:我并不使用你的github仓库,我直接 fork你的仓库,然后从我fork的仓库中拉取代码,修改后提交到我怕fork的仓库。然后在我fork的仓库中,pull Requests
到你的仓库即可。
你收到推送请求,审核代码后,Merge pull request
即可整合。
12. gitlab
-
概述:
- 相当于github的私服(在局域网上使用)
- 官网:https://about.gitlab.com/
-
待续…
13. IDEA 整合 Github
configure – >settings
将Git 整合到 IDEA
配置github账号
配置成功后。apply即可