Git的基本操作
- 前言
- 正文
- 1、Git本地仓库创建和一些基本概念
- 1.1 本地仓库创建
- 1.2 本地项目创建
- 1.3 仓库区和工作区
- 1.4 暂存区
- 1.5 提交
- 1.6 查看状态
- 1.7 查看日志
- 2、Git服务器和远程仓库创建
- 2.1 搭建自己的Git服务器
- 2.2 免费服务器
- 2.2.1 github.com
- 2.2.2 gitee.com
- 2.2.3 创建远程仓库
- 3、克隆
- 3.1 https方式
- 3.2 ssh方式
- 3.3 服务器 ssh公钥添加
- 4、添加、提交、推送、拉取
- 4.1 添加
- 4.2 提交
- 4.3 推送
- 4.4 拉取
- 5、分支创建与合并
- 5.1 创建分支
- 5.2 切换分支
- 5.2.1 通过切换/检出
- 5.2.2 通过版本分支图进行切换
- 5.3 合并分支
- 6、冲突
- 6.1 冲突如何产生
- 6.2 如何解决冲突
- 6.3 如何解决冲突
- 7、忽略
- 8、版本回退
- 8.1 版本回退操作
- 8.2 三种重置类型
- 8.3 打标签
- 9、子模块
- 10、issue 和 PullRequest
前言
本文将从最基本的操作开始,逐步介绍如何创建本地仓库、连接远程仓库、克隆项目、添加文件、提交更改以及推送更新,通过本文的学习,将能够掌握Git的基本操作,为日后的项目开发打下坚实的基础。
正文
1、Git本地仓库创建和一些基本概念
1.1 本地仓库创建
在需要创建仓库的文件夹下,点击鼠标右键->选择Git Bash Here
输入 git init
指令:
创建成功后:
1.2 本地项目创建
创建项目: git init XXX
输入 git init tModels
指令:
创建成功后:
1.3 仓库区和工作区
.git 文件夹
称为仓库区 ,类似于一个数据库存储着每一次提交的变化;
.git 所在目录
称为工作区,在这里可以创建项目和其他文件.
1.4 暂存区
暂存区 是存储将要被提交的文件变化的区域
通过 git add <文件名>
指令可以把可以把文件添加到暂存区;
添加到暂存区后,图标会变成如下所示:
如果文件太多,可以用 git add .
把所有的文件添加到暂存区
创建 2.txt、3.txt 文件:
添加成功后:
1.5 提交
使用 git commit -m "提交消息"
命令提交暂存区存储的变化并生成一个新的版本
如 git commit -m "初次提交"
提交后:
文件图标会变成如下所示:
如果不加 -m "提交消息"
先修改 2.txt 文件:
添加到暂存区后,只输入 git commit
指令,会进入下面的界面:
这是 linux 里面的 vim 程序,相当于 Windows 里面的 记事本;
简单介绍下 vim 的常用指令:
i
命令进入插入模式 ;exc
退出插入模式;shift zz
退出Vim编辑器;
1.6 查看状态
使用 git status
命令查看状态;
1.7 查看日志
使用 git log
命令查看日志;
2、Git服务器和远程仓库创建
2.1 搭建自己的Git服务器
有条件的话可以搭建自己的 Git 服务器
2.2 免费服务器
2.2.1 github.com
github:全球最大的开源项目托管平台
2.2.2 gitee.com
Gitee :也被称为“码云”,是中国领先的代码托管与社交化软件开发协作平台;
本专栏主要采用 Gitee 作为 Git 服务器,下面的操作也是基于 Gitee 服务器实现的
2.2.3 创建远程仓库
- 注册 gitee 账号(这里不做过多介绍)
- 创建仓库
-
输入仓库名称
-
更改路径(也可以不更改)
-
写仓库介绍
-
设置仓库是私有还是开源
-
初始化仓库:a、选择语言 b、添加 .gitignore c、添加开源许可证
-
设置模板
3、克隆
3.1 https方式
-
首先获 HTTPS 的地址:
-
输入
git clone "https地址"
指令
克隆成功后:
-
如果是私有项目,第一次克隆需要我们输入 Git 的账号和密码
3.2 ssh方式
-
ssh 是一种开源非对称加密通信协议;
-
ssh 只是一种协议,有开源实现也有商业实现,Git 默认使用开源实现的 openssh;
-
ssh 通信需要一堆密钥(公和私一对),私钥留在自己电脑上,公钥给其他电脑;
-
使用 Git Gui 生成密钥 并把公钥放在服务器上;
注意:点击 Generate Key 时会弹出一个 OpenSSH 的对话框,可以输入一个密码,这个密码是对公钥的再次加密,提高公钥的安全性
-
安装完第一次克隆会请求是否允许使用 ssh,需要我们输入一个 “yes”
3.3 服务器 ssh公钥添加
- 设置
- 安全设置
- 添加公钥
4、添加、提交、推送、拉取
下面的操作为了方便都使用 TortoiseGit 进行;后续会有介绍 Git 指令的文章;
4.1 添加
将文件添加到暂存区;
上图中
tExcelHelper.py 是已经添加过的状态
tFileINI.py 是未添加过的状态
添加方式:
成功添加后:
4.2 提交
提交只提交到本地仓库,需要推送才会把变化更新到服务器仓库
在日志信息中记录此次变更的信息:
成功提交后:
4.3 推送
在提交成功后,可以直接推送到服务器
注意:如果服务器版本比我们新,会推送不成功需要先拉取
推送成功:
这时刷新服务器,可以看到:
4.4 拉取
注意:拉取时应确保工作区整洁
5、分支创建与合并
master 是仓库的主分支,为了避免开发过程中程序员之间相互影响,一般选择创建一个新的分支来开发新功能;
5.1 创建分支
这时提交的话 还是显示提交到 master 分支,所以需要切换分支
5.2 切换分支
5.2.1 通过切换/检出
5.2.2 通过版本分支图进行切换
右键选择"切换/检出到(S) 分支名"
5.3 合并分支
如果在 “新的分支” 下创建新文件,在版本分支图中:
通过 “显示日志” 可以看到该分支下的变更信息
如果在 master 和 “新的分支” 下都有已提交的文件,那应该如何合并呢?
-
首先要切换到主分支上
-
选择"合并"
-
选择要合并到主分支上的分支
可以看到已经合并成功:
6、冲突
6.1 冲突如何产生
两个分支修改了同一文件,合并的时候会发生冲突
例如:在 master 分支中修改 new.txt 文件
在 “新的分支” 分支中同样修改 new.txt 文件:
这时,如果想要把 “新的分支” 合并到 master 中来,合并会报错:
在两个分支中修改的 new.txt 文件图标变成:
打开之后:
6.2 如何解决冲突
协商修改冲突位置,并重新提交
会提示当前提交的文件是冲突的,需要手动解决:
也可以在合并失败时直接点击"解决"
双击要解决冲突的文件:
感叹号的这一行为有冲突的地方:
可以自己编辑文本,也可以右键选择优先使用左侧或者右侧文本:
然后点击 “保存” 选择 “标记为解决”:
’再次提交时会提示 “是一个特殊的提交”:
6.3 如何解决冲突
尽量避免冲突,如果有冲突:
- 先 pull 再修改;
- 确保自己正在修改的文件是最新版本的;
- 各自开发各自的模块,如果要修改公共文件,最好先确认有没有人正在修改;
- 不要擅自修改同事的代码
7、忽略
忽略文件:.gitignore
用 touch .gitignore
命令来创建一个忽略文件
- 按文件名忽略文件夹:
文件夹名/ ([Aa]忽略大小写)
- 按路径忽略文件夹:
/文件夹名(路径)/
- 忽略文件:
*.后缀名
- 反忽略,对文件和文件夹都有效:
!*.文件名
或!A/
注意:空文件夹会被自动忽略
8、版本回退
8.1 版本回退操作
在 “版本日志界面” 选择一个想要回退的节点,使用重置(Reset)命令:
8.2 三种重置类型
三种重置类型:
1、软重置(S):不更改工作区和索引;
2、混合(M):保持工作区不变,重置索引文件(重置暂存区);
3、硬重置(H):重置工作区和索引(丢弃所有本地变更,谨慎使用);
注意:
Head:当前分支的引用指针(重置就是移动Head这个指针)
Index:就是缓存区(被Add的,也可以说是将要提交的,文件的快照)
工作区:.git所在目录以及子目录
8.3 打标签
目的是放置硬重置后,再想恢复的情况
具体操作,选中版本后,右键,选择 “在此版本上创建标签”:
如果想要重置到 打标签 的这个版本,要选择 “标签(T)”:
9、子模块
子模块:就是一个 Git 仓库包含其他 Git 仓库
当我们需要把其他开源项目作为本项目的一个库,并可以随时拉取更新的时候
或者我们的项目需要分模块独立开发的时候可以使用子模块
添加子模块的操作:
添加子模块成功:
会自动生成 .gitmodules 文件(配置文件):
注意:克隆有子模块的仓库,需要选择递归
10、issue 和 PullRequest
issue:讨论
PullRequest:拉取请求,为项目贡献代码,请求项目管理者合并自己的代码