Qt-Git

1. 版本管理

1.1 人工版本管理

人工管理: 费时费力。

1.2 git 概述

git是一款版本管理软件, 可以在任何时间点保存文件,也能够恢复到以前任何时间点保存的文档

main.cpp 在不同的时间点进行了保存,那么就能恢复到任意一个时间点保存的文件

2. git安装

下载地址: https://git-scm.com/downloadshttps://git-scm.com/downloads

下载文件:

安装过程是傻瓜安装,全部next即可。

但是如果要调整安装路径,必须不能包含中文。

安装完成后右键菜单会多出两个选项:

点击 Git Bash Here 可以打开git命令行工具。

学习git 就是学习git命令

3. git 基本操作

3.1 配置 git 用户信息

  • 配置提交人姓名: git config --global user.name 姓名

  • 配置提交人邮箱: git config --global user.email 邮箱地址

  • 查看git信息: git config --list

  • git配置文件路径: C:\Users\Administrator\.gitconfig

3.2 git工作流程

  • 工作目录: 自己的项目目录

  • 暂存区: 存放临时修改的文件

  • git仓库: 用来保存编写好的项目文件,任何一个文件都能在任何时间点进行保存

工作流:

  1. 在项目目录下创建项目文件

  2. 将项目文件提交到暂存区

    注意: 存放在暂存区的文件只有一份,后提交的会覆盖之前提交的文件

  3. 暂存区文件才能再提交到 Git 仓库

    注意:git 仓库中,同一个文件会有多份,都有自己的id号(版本号)

3.3 git基本操作命令

  1. git init -初始化git仓库

  2. git status -查看文件状态

  3. git add 文件名 -添加文件到暂存区,该文件被git管理起来

  4. git commit -m 提交信息 -向仓库中提交代码,需要添加提交日志信息

  5. git log -查看提交记录

1.创建项目,并创建 git仓库

2.仓库状态

  • On branch master --- 分支相关信息,暂不用看

  • No commits yet --- 尚没有文件提交到仓库

  • Untracked files --- 未追踪文件,即还没有被 git 仓库管理的文件

    • 重点:红色代表该文件还没有被 git 管理

3.将main.cpp 添加到暂存区

new file: 代表该文件已增加到暂存区

4.将main.cpp 文件提交到 git 仓库

5.查看日志

3.4 git忽略清单

在实际开发中,有些 文件/文件夹 是不需要被 git 管理的

实际开发时,在项目根目录下创建一个 .git ignore 文件,在文件中写入不希望git管理的文件或者文件夹名称即可

查看状态,此时已经看不到 myapp.pro.user 文件了

3.5 一次性提交多个文件

git add . : . 代表任意文件

3.6 修改文件后再次提交

1.修改 widget.cpp 文件

2.查看文件状态

modified: 说明哪些文件发生了改变,并且在修改之后并没有提交到git

3.再次提交

4. 文件恢复

4.1 暂存区-->项目目录

目标: 使用暂存区中的文件,覆盖当前项目目录中的文件

应用场景: 在时间点A向暂存区进行了一次提交, 之后继续编写代码,在时间点B发现代码有错,需要恢复成时间点A的代码

cpp 复制代码
git  checkout  文件名

示例:

  1. 修改 widget.cpp 文件中的代码

重点:代码修改完成后并未再次添加到暂存区

  1. 查看文件状态

3.从暂存区恢复

  1. 回到Qt编辑器会提示文件被修改过

选择 "Yes to All" 时,恢复成原来的状态(暂存区的版本)

4.2 删除暂存区文件

git rm --cached 文件名

示例1: git rm --cached widget.cpp 从暂存区删除 widget.cpp 文件

示例2: git rm --cached -r . 从暂存区删除所有文件

4.3 git仓库 --> 项目目录(版本穿越)

git log 查看已有版本

git reset --hard commitID

该命令能够从仓库恢复文件,从仓库恢复的文件会同时覆盖暂存区和项目目录的文件。同时,git log命令只能查看到恢复到的版本号。之后的版本号无法看到。

1.使用 git log 查看之前提交的版本

2.要穿越到哪个版本就复制哪个版本号

3.再次查看日志

只能看到第一次提交的版本号

4.4 精简版信息查看

git reflog 查看精简版

查看精简版,能够看到所有的操作

该命令读取的是 .git/logs/HEAD 文件

如果要穿越回其他的任意版本号,都可以从该文件中找到

5. 分支

5.1 分支概述

分支概念: 为项目创建多个副本,每个副本完成一个独立的工作。 分支能够做到多件事情同时进行,且互不影响

  • 主分支(master)

    • 主分支是系统默认使用的分支,之前示例中的代码提交全部都是在主分支中完成的

    • 主分支上最终会保存整个项目的完整代码,项目开发完成后要上线运行,也是运行的主分支上得完整代码

  • 开发分支(develop)

    • 开发分支是为了完成某个功能模块的开发而单独建立的副本。例如:开发用户管理模块(users.cpp)页面时,就能创建 users 分支。

    • 开发分支是基于主分支创建的,当然一个开发分支下还能再创建另一个开发分支,形成 父-子-孙-... 结构

    • 开发分支上工作完成后,一定会合并回主分支

主分支: 系统默认是在主分支(master)上的

开发分支

小结

  • 主分支是Git自动帮我们创建的 master,这条分支上的代码一般用于都是线上的项目

  • 开发分支,在主分支上进行创建,一般用于我们开发的时候使用,也需要尽量保证其稳定性

5.2 分支命令

  • 查看分支: git branch

  • 创建分支: git branch 分支名

    • 在哪条分支上输入的命令,就是在哪条分支上进行的创建

    • git branch users 创建了一个叫做 users 的分支

  • 切换分支: git checkout 分支名

    • git checkout users 切换到 users 分支上

    • 在 users 分支上只能看到 主分支 和 当前分支(users)上的文件

  • 注意:当切换分支的时候,需要把暂存区里面的文件进行提交,不然会暂存区里面的文件会跟着到切换的这条分支上

    • 当切换回主分支的时候,就看不到其他分支里面的文件了
  • 注意: 切换分支时,必须保证当前分支的文件全部提交到仓库。

创建和使用分支案例,步骤如下 :

  1. 创建项目,并在创建时选择 git 作为版本管理工具

  2. 新建一个 MyButton 自定义控件,将项目提交到暂存区,再提交到仓库

  3. 查看分支,创建 users 分支,切换到 users 分支

  4. 创建 Users模块,并将Users模块提交到users分支上

  5. 切换 master/users 分支, 查看编辑器中文件显示的情况

1.创建项目,并在创建时选择 git 作为版本管理工具

使用git时会自动生成一个master分支,也叫主分支。项目默认创建在master分支上

  1. 新建一个 MyButton 自定义控件,将项目提交到暂存区,再提交到仓库

注意: 创建的自定义空间也要交给 git 管理

通过 Qt Creator 创建的项目和文件已经添加到 暂存区

将文件提交到暂存区,再提交到git仓库

3.查看分支,创建 users 分支,切换到 users分支

  1. 创建 Users模块,并将Users模块提交到users分支上

查看git 状态

将 Users 模块提交到users分支

  1. 切换 master/users 分支, 查看编辑器中文件显示的情况

① 查看编辑器中的状态

② 切换回主分支

③ 回到编辑器中

编辑器中提示保存文件,一定要选择 关闭项。

④ 切换至 users 分支,观察编辑器

  1. 同理,创建 goods分支、Goods 模块

5.3 合并分支

  • 合并分支: git merge 分支名

    • git merge users 合并 users 分支

    • 注意: 合并分支时,要在 master 分支上

5.4 删除分支

  • 删除分支: git branch -d 分支名

  • 分支如果没有被合并则不允许删除

  • 如果要强制删除使用 -D 参数

强制删除 goods 分支

5.5 临时存储分支

当在某一分支上进行开发时,如果该分支上的文件没有提交到 git 仓库,则不允许进行分支切换。

当你在一个分支工作时,临时出现了一个更紧急的任务需要马上完成。而此时,当前分支的工作并没有完成,也不希望提交,这时就可以进行临时存储。

  • 将当前所有的改动临时存储: git stash

  • 将临时存储进行恢复: git stash pop

注意:

  • 在其他的分支中也能执行恢复改动,但是会把这些文件恢复到当前命令的分支,所以我们在恢复的时候需要注意,我们当时在哪个分支进行的开发

示例:

  1. 创建 test分支,创建 Test 模块,将 Test模块添加到 test分支
  1. 对 test.cpp 进行修改

3.因为 test.cpp 被修改了,如果在未提交到仓库前就进行分支切换,会报错

4.此时如果要切换分支,则需要将修改保存到临时存储分支

5.切换分支

6.切换回test分支,并恢复

6. 远程仓库

6.1 远程仓库(github/gitee)

  • 企业开发项目时,通常都是若干人组成一个项目组进行开发。

  • git 只能在本地电脑上创建仓库,管理个人编写的项目代码,而实际开发时需要团队协作,这时就需要一个共用的仓库,这个仓库会单独放在一台服务器上,在这台服务器上搭建的仓库就是远程仓库。

  • 远程仓库可以是公司内部自行搭建的,也可以使用互联网上的远程仓库。github 和 gitee 是最常用的互联网远程仓库。

  • github是国外的网站,所以速度相对慢一些;gitee(码云),是国内的网站,速度快一些。

6.2 注册 gitee 账号

6.3 多人协作流程

  1. 项目经理(PM)在本地创建项目主体架构,并提交到本地git仓库;再将项目推送(push)到远程仓库(github、gitee)上

  2. 邀请程序员 A、B、C 加入项目组

  3. 程序员 A、B、C 可以远程克隆(clone)项目,然后按照之前分配好的任务完成自己的功能

  4. 程序员完成功能后,将自己写的代码再推送(push)到远程仓库中

  5. 项目经理从远程仓库中拉取(pull)所有完成好的项目代码

6.4 PM创建本地仓库

目标:PM创建本地仓库,并将代码提交到本地仓库

步骤:

  1. PM创建本地仓库

  2. PM将项目代码添加到暂存区

  3. PM将项目代码提交到本地仓库

  4. PM创建远程仓库 (github)

cpp 复制代码
# 初始化仓库
git init  

# 将项目代码添加到暂存区, 
git add .

# 将项目代码提交到本地仓库
git commit -m PM创建项目仓库提交原型

6.5 PM创建远程仓库

1.创建远程仓库

2.填写仓库信息

3.仓库创建成功

6.6 PM将项目文件推送到github

cpp 复制代码
# 将本地仓库中的最新版本推送到远程仓库
git push https://gitee.com/hhb1218/pm.git master

向远程仓库推送数据时,需要填写用户名和密码

提交成功提示

重载远程仓库页面

6.7 windows凭据

windows凭据中记录了github的账号和密码,所以再向github中推送数据时,不需要再添加账号和密码

6.8 简化推送命令

为远程仓库地址设置别名:git remote add 别名 远程仓库地址

示例:

cpp 复制代码
# 为远程仓库设置一个简单的别名
git remote add origin https://gitee.com/hhb1218/pm.git

# 使用别名进行推送
git push origin master

# -u 能够保存提交地址和分支下一次直接使用
git push -u origin master

# 使用过 -u 参数后,再次提交,直接使用 git push 即可
git push

6.9 组员clone项目

clone 不需要权限

cpp 复制代码
git clone https://gitee.com/hhb1218/pm.git

6.10 组员修改程序后提交回远程仓库

PM必须将codeA、codeB、codeC邀请为组员,否则codeA、codeB、codeC没有权限向远程仓库提交数据。

PM 邀请 codeA、B、C 成为开发者:

复制邀请链接并发送给 codeA、B、C

codeA、B、C 接收邀请:

codeA、B、C 登录 gitee后,将PM发送的邀请链接地址复制到浏览器地址栏中

codeA、B、C 接受邀请

6.11 PM拉取最新版本

cpp 复制代码
git pull origin master
  • git clone 是在第一次加入项目时使用,从远程仓库下载完整的项目代码

  • git pull 是在已有代码基础上执行的,只拉取新增或者修改的文件

6.12 冲突解决

解决办法: coderB 将冲突文件修改后再向 github 进行提交

coderB 要先拉取(git pull) 远程仓库的代码; 手动修改文件解决冲突;再 commit 到本地仓库,再git push 到远程仓库

报错信息:

拉取时提示的冲突信息:

7. ssh免密登陆

  • ssh: 不需要输入用户名和密码也能登录

  • ssh 通过验证公钥和私钥的配对情况决定是否登录

  • 公钥和私钥需要开发者使用命令生成

  • 公钥:保存在远程仓库

  • 私钥:保存在开发者电脑

步骤:

  1. 生成秘钥: ssh-keygen

  2. 将公钥复制到 github 中

第一步:生成公钥和私钥:

第二步: 找到公钥并复制公钥字符串:

使用编辑器打开公钥文件,复制文件内容 :

第三步:在gitee仓库中找到 ssh :

第四步: 将公钥添加到网站中 :

使用 ssh 提交文件:

cpp 复制代码
# 为远程仓库地址起一个别名
git remote add alishow_ssh [email protected]:hhb1218/alishow.git

# 使用 git push 提交文件
git push -u alishow_ssh master

git push

8. readme.md

相关推荐
hillstream37 分钟前
配置git从公网能访问-基于frp
git·gitlab
仍然探索未知中15 小时前
Git分支管理
git
小妖66616 小时前
windows11 安装好后右键没有 git bash 命令
git
只做开心事16 小时前
Git 多人协作
git
freejackman17 小时前
Git从入门到精通
git·gitee·gitlab·github
兔子坨坨19 小时前
pycharm连接github(详细步骤)
windows·git·学习·pycharm·github
大大小小聪明1 天前
Git合并多个提交方法详解
git·github
Baoing_1 天前
Git 项目切换到新的远程仓库地址
git
暴躁哥2 天前
Git 版本控制系统入门指南
git
diving deep2 天前
IDEA中git对于指定文件进行版本控制
git