【Git&Github】分布式版本控制系统和远程仓库
编程语言
2023-12-17 09:25:03
阅读次数: 0
背景
(一)版本控制
1、文件的版本
2、版本控制软件/系统
(1)初识
- 定义:
软件管理
文件版本,便于查阅特定版本修订情况,也叫版本控制系统
- 优点
- 操作简便,仅识记几组简单终端命令
- 易于对比
- 易于回溯
- 不宜丢失
- 协作方便
(2)分类
① 本地版本控制系统
- 特点:使用软件记录文件版本,提高工作效率,降低手动维护出错率
- 缺点
单机运行
,不支持多人协作开发
- 版本数据库故障会导致所有历史记录丢失
② 集中化版本控制系统
- 特点:基于服务器、客户端运行模式
- 服务器:保存文件
所有更新记录
- 客户端:保留
最新文件版本
- 优点:联网运行,支持多人协作开发
- 缺点
- 不支持离线提交版本更新
- 中心服务器的崩溃和故障直接影响用户工作和历史保存
③ 分布式版本控制系统
- 特点:基于服务器、客户端运行模式
- 服务器:保存文件
所有更新版本
- 客户端:保留
服务器完整备份
- 优点
- 联网运行,支持多人协作开发
- 客户端支持
离线本地提交版本更新
- 服务器故障或损坏后,支持任何客户端备份进行恢复
(二)Git 基础概念
1、概念
2、三个区域/三种状态
- 工作区:文件已修改
- 暂存区:文件已暂存
- Git 仓库:文件已提交
一、Git 基础
(一)安装并配置 Git
(二)Git 基本操作
1、获取 Git 仓库
(1)初始化仓库 *
- 将未进行版本控制的
本地目录转为 Git 仓库
- 步骤
- 项目目录中,鼠标右键打开“Git Bash”
- 执行
git init
命令将当前目录转为 Git 仓库
- git init 命令创建
.git 隐藏目录作为当前项目的 Git 仓库
,其中包含初始的必要文件
(2)克隆仓库
2、工作区文件状态
- 工作区每个文件可能存在4种状态,分为两类
3、查看文件状态 *
- 繁琐报告:使用命令
git status
查看文件所处状态
- 精简报告:使用命令
git status -s/--short
命令查看文件所处状态
4、跟踪新文件
- 使用命令
git add 文件名
开始跟踪一个文件
- 2个红色问号:未跟踪文件(Untracked)
- 绿色 A :新添加到暂存区
5、提交更新
- 使用命令
git commit -m "提交消息"
提交暂存区中等待被提交的文件
6、修改已提交文件
- 使用命令
git status
和git status -s
检查修改了的已提交文件
- 红色 M :文件已修改但没有放入暂存区(Modified)
7、暂存已修改文件
- 使用命令
git add 文件名
暂存已修改文件
- 绿色 M :文件已修改且放入暂存区(Modified)
- 多功能命令
git add
- 开始跟踪新文件
- 把已跟踪、已修改的文件放到暂存区
- 把有冲突的文件标记为已解决
8、提交已暂存文件 *
- 使用命令
git commit -m "提交消息"
将暂存区中的文件快照提交到 Git 仓库
- nothing to commit:没有需要提交的文件了
9、撤销对文件的修改
- 使用命令
git checkout -- 文件名
撤销对文件的修改
- 本质:用 Git 仓库中保存的文件,覆盖工作区指定文件
- 注意:
所有修改均会丢失且无法恢复,谨慎操作
10、向暂存区一次性添加多个文件 *
- 使用命令
git add .
一次性将所有新增和修改过的多个文件加入暂存区
11、取消暂存文件
- 使用命令
git reset HEAD 移除文件名
将文件从暂存区移除
12、跳过使用暂存区
- 使用命令
git commit -a -m "提交消息"
将所有已跟踪的文件暂存起来一并提交,跳过 git add 步骤
13、移除文件
- 从 Git 仓库和工作区同时移除
- 从 Git 仓库移除,保留工作区文件
14、忽略文件
- 存在一些无需纳入 Git 管理,也不希望显示未跟踪的文件,创建名为
.gitignore
的配置文件,列出要忽略的文件的匹配模式
格式规范 |
#开头 |
/结尾 |
/开头 |
!开头 |
glob模式 |
含义 |
注释 |
目录 |
防止递归 |
取反 |
文件和文件夹匹配,简化的正则 |
15、查看提交历史
16、回退到指定版本
二、GitHub
(一)背景
- 开源协议
- GPL:传染性极强,不允许修改和衍生代码作为闭源商业软件发布和销售,如:Linux
- MIT:目前限制最少的协议,要求修改后的代码或发行包中必须包含原作者许可信息
- 开源项目托管平台:专门用于免费存放开源项目源代码的网站
(二)使用
1、注册、新建空白远程仓库
2、访问远程仓库
(1) HTTPS
(2)SSH
- 额外配置,实现本地仓库和 Github 免登陆加密传输,推荐使用
- 私钥:id_rsa,存放于客户端电脑
- 公钥:id_rsa.pub,配置到 Github
- 生成 SSH key
- 配置 SSH key
- 记事本打开 id_rsa.pub 并复制内容
- 登录 Github 并点击头像 => Settings => SSH and GPG Keys => New SSH key
- 将 id_rsa.pub 内容粘贴到 Key 对应文本框
- Title 文本框填写名称标识 Key 来源
- 检测配置是否成功
- 基于 SSH 将本地仓库到 Github
- 将远程仓库克隆到本地
- 打开Git Bash,输入
git clone 远程仓库地址
并回车执行
- Github 仓库内点击 Clone or download 获得远程仓库地址
三、Git 分支
(一)定义
- 分支:彼此互不干扰,各自完成工作和内容,使用完后合并到 master 主分支
- 主分支:用于
保存和记录整个项目已完成的功能代码
,不允许直接在主分支修改代码,风险过高,容易导致项目崩溃
- 功能分支:从主分支分出
专门开发新功能
的分支,当新功能开发且测试完毕后合并到主分支
- 作用:多人协作开发时防止互相干扰,提高协同开发体验
(二)操作
1、本地分支操作
- 查看分支
git branch
- 创建分支
git branch 新分支名称
- 基于当前分支,创建新分支
- 创建新分支后,依然处于旧分支
- 切换分支
git checkout 跳转分支名称
- 快速创建/切换分支
git checkout -b 跳转新分支名称
- 合并分支
git merge 合并分支名称
- 先切换到主分支/目标分支再操作 git merge
- 删除分支
git branch -d 删除分支名称
- 遇到冲突时合并
- 在不同分支中
对同一文件进行不同修改
,需手动打开冲突文件手动解决
2、远程分支操作
- 本地分支推送远程仓库
- 第一次推送
git push -u 远程仓库名称 本地分支名称:远程分支名称
- 后续推送
git push
- 查看远程仓库所有分支列表
git remote show 远程仓库名称
- 跟踪分支
- 从远程仓库中把分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程分支名称
- 从远程仓库中把分支下载到本地仓库,将下载的本地分支重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
- 拉取远程分支最新代码
git pull
- 删除远程仓库指定分支
git push 远程仓库名称 --delete 远程分支名称
转载自blog.csdn.net/weixin_64210950/article/details/127801631