1.Git概述
1.1 Git历史
最初Linux内核项目没有版本控制系统管理和维护代码,导致维护工作都花在了提交补丁和保存归档的繁琐事务上( 1991 2002 年间)。到2002年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了Linux 内核社区免费使用 BitKeeper的权利,于是Linux 开源社区决定开发出自己的版本系统。这就是Git的由来
1.2 Git 与 SVN 对比
SVN是集中式版本控制系统,版本库放在中央服务器。
缺点:
- 服务器单点故障
- 容错性差
Git是分布式版本控制系统,分为两类仓库:本地仓库和远程仓库。
- 本地仓库:是在开发人员自己电脑上的Git仓库
- 远程仓库:是 在远程服务器上的 Git 仓库
- Clone :克隆,就是将远程仓库复制到本地
- Push:推送,就是将本地仓库代码上传到远程仓库
- Pull:拉取,就是将远程仓库代码下载到本地仓库
- Commit:提交,就是将代码上传到本地仓库
1.3 Git工作流程
- 从远程仓库中克隆代码到本地仓库
- 从本地仓库中 checkout 代码然后进行代码修改
- 在提交前先将代码提交到暂存区
- 提交到本地仓库。本地仓库中保存修改的各个历史版本
- 修改完成后,需要和团队成员共享代码时,将代码 push 到远程仓库
1.4 Git下载安装
下载地址:https://www.git-scm.com/download/
安装成功后,在桌面右键会看到如下菜单
Git GUI: Git 提供的图形界面工具
Git Bash: Git 提供的命令行工具
2.Git代码托管服务
- gitHub 地址: https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 gitHub
- 码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub ,码云速度会更快
- GitLab (地址 https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务
3.Git常用命令
3.1 环境配置
设置用户信息
git config --global user.name “zhangsan”
git config --global user.email “zhangsan@193.com”
查看配置信息
git config --list
git config user.name
3.2 获取Git仓库
- 在本地初始化一个Git仓库:在任意空文件夹下点击右键打开 Git bash 窗口,执行命令git init
- 从远程仓库克隆:执行命令 :git clone 远程仓库地址 ,例如:
git clone https://github.com/XXXX/ABC.git
3.3 工作目录、暂存区以及版本库概念
版本库:.git隐藏文件夹就是版本库,隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含 .git 文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:git 文件夹中有很多文件,其中有一个 index 文件就是暂存区,也可以叫做 stage 。暂存区是一个临时保存修改文件的地方
3.4 Git 工作目录下文件的两种状态
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
Unmodified 未修改状态
Modified 已修改状态
Staged 已暂存状态
3.5 本地仓库操作
git status 查看文件状态
git status -s 简洁输出文件状态
git add 将未跟踪的文件加入暂存区
git add hello.txt
加入后状态:
从暂存区撤回
git reset head hello.txt
git commit 将暂存区的文件修改提交到本地仓库
git rm 删除文件
删除后查看文件状态
将工作区删除的文件提交到本地仓库
将文件添加至忽略列表:
可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
git log 查看日志记录
3.6 远程仓库操作
git remote 查看远程仓库
git remote add < shortname > < url > 添加远程仓库
git clone [url] 从远程仓库克隆
git remote rm < shortname > 移除无效远程仓库
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
从远程仓库中抓取与拉取
git fetch [remote-name] [branch-name] 是从远程仓库获取最新版本到本地仓库,不会自动 merge
git pull [remote-name] [branch-name] 是从远程仓库获取最新版本并 merge 到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报
错( fatal: refusing to merge unrelated histories ),解决此问题可以在 git pull 命令后加入参数 allow unrelated histories
git push [remote name] [branch name] 推送到远程仓库
需要输入仓库用户名和密码
3.7 Git分支
查看分支
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
git branch b1 创建分支
git checkout b1 切换分支
git push origin [branch-name] 推送至远程仓库分支
git merge [branch-name] 合并分支
git branch -d < branch-name > 删除分支
git push < remote-name > -d < branch-name> 删除远程仓库分支
3.8 Git标签
git tag < tag-name> 新建标签
git tag 列出所有标签
git show < tag-name> 查看tag信息
git push [remote-name] [tag] 将标签推送至远程仓库
git checkout -b [branch-name] [tag-name] 新建一个分支,指向某个tag
git tag -d [tag-name] 删除本地tag
git push [remote-name] :refs/tags/[tag-name] 删除远程tag
4.使用TortoiseGit管理文件版本
4.1 TortoiseGit安装
TortoiseGit是一款开源的 Git 图形界面工具,使用 TortoiseGit 可以简化 Git 相关的操作(本质上还是执行的Git相关命令)
TortoiseGit 下载地址: https://tortoisegit.org/download/
4.2 TortoiseGit使用
创建仓库
克隆仓库
将文件添加到暂存区
提交文件
推送本地仓库到远程仓库
拉取代码
创建分支
切换分支
合并分支
5.在IDEA中使用Git
5.1 在 IDEA 中配置 Git
选择 File→Settings 打开设置窗口,找到 Version Control 下的 git 选项:
选择 git 的安装目录后可以点击“ Test” 按钮测试是否正确配置
5.2 在 IDEA 中使用 Git
将工程添加至 Git,加入到Git的文件颜色会有变化
将文件添加到缓存区
提交文件
将代码推送到远程仓库
从远程仓库克隆工程到本地
从远程拉取代码
创建分支
切换分支
分支合并
6.使用SSH协议传输数据
6.1 Git支持的传输协议
本地协议( Local)
HTTPS 协议
SSH (Secure Shell )协议
Git 协议
6.2 什么是 SSH 协议
SSH为 Secure Shell (安全外壳协议)的缩写,由 IETF 的网络小组( Network Working Group )所制定。 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
使用ssh 协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙(公钥和私钥),并把公匙放在需要访问的服务器上。
6.3 配置 SSH 协议
1、使用命令 ssh keygen -t rsa 生成公钥和私钥,执行完成后在 window 本地用户 ssh 目录 C: Users 用户名 .ssh 下面生成如下名称的公钥和私钥
2、复制公钥文件内容至Git服务器