实习前自我培训-Day2学习
如CVS,SVN等都有一个单一的几种管理服务器,保存所有文件的修订版本,而协同工作的人通过客户端连接到这台服务器,从而取出最新的文件或者提交更新。缺点:中央服务器的单点故障;多(程序员)对一(中央服务器)如git,客户端取的不是最新的文件快照,而是把代码仓库完整的镜像下来到本地库(克隆/备份)
Day2学习-Git实操

什么是git?
了解git
-
Git是一个免费的,开源的分布式版本控制系统
-
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
什么是集中式和分布式版本控制工具
-
集中式版本控制工具: 如CVS,SVN等都有一个单一的几种管理服务器,保存所有文件的修订版本,而协同工作的人通过客户端连接到这台服务器,从而取出最新的文件或者提交更新。缺点:中央服务器的单点故障;多(程序员)对一(中央服务器)
-
分布式版本控制工具: 如git,客户端取的不是最新的文件快照,而是把代码仓库完整的镜像下来到本地库(克隆/备份)
Git的安装与使用
Git安装
官方网址Git
点击下载:

找到对应电脑系统的网址:

下载好之后,直接点击exe文件,进行配置选择,基本上一直选择下一步即可:

选择第一个就可以足够使用:

Git使用
安装完成后首先进入bash配置自己的名字和邮箱
- 配置名字
git config --global user.name "Name"
- 配置邮箱
git config --global user.email your_email
global表示全局配置的意思,如果需要在单独的项目中配置,不需要添加global
Git的工作原理
-
主要流程:新建一个项目后自动新建了main/master分支,这个时候我们新建一个develop分支用来作为主开发的分支,然后不同小组新建各自的feature分支来开发各自的功能,开发完后向develop主开发分支提交合并请求,develop分支对其进行验证,找不到bug后新建一个release分支作为测试服,在进行长时间验证,发现错误就打回develop进行修复,发现很稳定后就向主项目main/master合并,并生成版本号
-
main/master 分支是项目的核心分支,只接受hotfixes(热修复,紧急修复 )和release(预发布版本)的分支合并 ,通常具有版本号,可以称为正式版
-
release 分支是develop分支拿来验证的分支,就是所谓的测试版
-
develop 分支是开发分支,也是长期存在的核心分支,主要功能是收集各种feature分支,对他们进行测试和验证
-
feature 分支是各种新功能的开发分支,可以同时开很多条分支,同时开发减少时间成本
-
版本号的说明:1.主版本:主要功能变化或者重大更新
2.次版本:添加一些新功能,改进旧功能
3.小版本:修复一些bug,打一些补丁
Git的本地使用
-
需要切换为英文输入法
-
git bash里面不能使用复制粘贴快捷键,复制需要左键拖动,粘贴使用鼠标中键即可
查看文件状态
git status
-
文件状态
-
红色:修改,创建,删除
-
绿色:git add
-
白色:git commit
-
创建项目文件夹
创建工作区
- 新建一个文件夹Test,右键选择open git bash here,进入bash界面
创建文件
-
第一种:在文件夹中直接创建
-
第二种:在bash界面中输入命令创建
#创建文件的常用指令
touch 文件名.后缀 #创建单个空文件
mkdir 目录名 #创建单个空目录
mkdir -p 目录1/目录2/目录三 #创建多级目录
初始化本地仓库
git init

添加文件
git add text.txt
-
此命令用于将文件添加到暂存区等待操作
-
一个文件如果没有通过add添加,就是未被跟踪的,如果添加了,它会一辈子被git跟踪或管理,添加后显示绿色

git add的使用方法
- 单独添加某个文件
git add <file>
- 添加此工作区所有文件
git add .
- 如果让文件取消被跟踪
git rm filename
- 保留目录但不被跟踪
git --cache filename
-
依旧跟踪,但被放到了暂存区,如何取回
- 特定文件
git reset HEAD filename- 所有文件
git reset HEAD -- .
提交文件到本地
- 提交代码
git commit -m "message"
- 将暂存区所有文件提交到本地仓库,后面的
""里面的东西是你对你这次提交的一个说明,可以输入任意内容,但是最好写更改了什么,方便自己看提交记录时不会蒙

-
白色框框就是提交时的留言,前面可以理解为操作的ID,这个ID在我们需要回退版本的时候要用,下面一行显示改变了多少文件,后面的±表示相较于之前是更改了还是删除了
-
撤销提交
git reset head~--soft
- 这个指令可以撤销我们的提交,但是不能撤销第一次提交,其他的都可以
这样撤销后文件会有暂存状态
不加soft则没有暂存状态head是当前提交~上次提交~2倒数第二次提交--hard不只是取消提交,之前的修改也全部取消了彻底回到上一次提交的状态(慎用,会数据丢失)
修改操作
- 已经commit的文件,如果被改动了,就相当于从暂存区又重新放回了工作区,需要重新添加到暂存区(git add)和提交(git commit)
查看提交记录
- 此指令可以查看所有东西
#指令
git log

- 加上–pretty=oneline可以使结果输出为一行

- 高度自定义输出
git log --pretty=format:"%h -%an,%ar:%s"

-
%h--------------简化哈希
%an------------作者名字
%ar------------修订日期,多久以前
%ad-----------修订日期
%s-------------提交说明
%H------------提交的完整哈希值 -
–graph使输出图像化,在分支多的情况下很好用,基本使用不影响
git log --graph
版本回退
git reset --hard 版本号
-
先使用git log获取版本号,再用上方命令将版本进行回退
-
如果想撤销版本的回退,可以使用下方命令获取版本ID
git reflog
分支的使用
- 查看本地分支
git branch
//还有其他的写法
git branch --list
-
git log也可以查看当前分支
-
创建本地分支
git branch 分支名
- 切换分支
git checkout 分支名
- 新建一个分支并切换到那个分支
git checkout -b 分支名
-
合并分支
- 注意:是将所填的分支名称合并到当前的分支
git merge 分支名称
- 删除分支
git branch -d 分支名
git branch -D 分支名 (强制删除)
暂存区的使用
- 如果在当前分支写代码写到一半,突然需要去另一个分支修复bug等问题,可以使用如下命令储藏我们所写的代码
git stash
# 储藏我们写到一半的代码
- 改完bug后,拿回我们的代码
git stash apply
- 也可以存储多次,可以用如下命令来查看储藏了几次
git stash list
- 如何拿回特定的储藏的代码
git stash apply stash@{0}
- 删除特定的stash
git stash drop stash@{0}
Git的远程使用
托管服务
-
代码托管服务是一种在线平台,核心功能是存储和管理代码,并提供团队协作和版本控制工具,让开发者可以追踪代码修改、多人协作开发并且避免冲突。
-
主流的托管服务平台有GitHub、Gitee、GitLab等等。
-
GitHub是全世界最大的开源代码托管平台,其基于 Git 这个强大的版本控制系统,不仅能存放代码,更是全球开发者的交流、学习、共建项目的核心阵地
关联远程仓库
git remote add 远端名称 仓库路径
# 远程仓库名是你要给远程仓库取的名字
# 仓库路径可以选择https或者ssh,直接复制在后面就可以
# 查看远程仓库名是否建好
git remote
# 如果命名错误,可以用下面的指令更改,前面是之前的,后面是改正后的
git remote 错误名 改正名
# 如果想要删除远程仓库别名,也可以用下面的指令
git remote rm
SSH的配置
- 生成SSH公钥
ssh-keygen -t rsa
输入后按三下空格确认

- 显示生成的公钥内容
cat ~/.ssh/id_rsa.pub

- 测试是否成功
ssh -T git@gitee.com

推送代码到远程仓库
- 把本地分支推送到远程仓库的默认分支,空仓库使用main
git push 仓库别名/仓库地址 本地分支名 : 远程分支名
# -f 表示强制覆盖远程的历史提交
# -u/--set-upstrea 推送到远程并同时建立起和远端的联系
# 意思是以后再推送同样的分支只用写 git push 就可以
# 后面的远程分支名可以不写,默认如果没有就新建
拉取和抓取代码到远程仓库
git pull [远程仓库别名] [远程分支名] : [本地分支名]
# 感觉 git pull = git fetch + git merge
# 本地分支名不写就是默认当前分支
# 解读:将远程仓库的远程分支和本地分支合并
merge和rebase的区别
| 维度 | Merge (合并) | Rebase (变基) |
|---|---|---|
| 历史结构 | 非线性,保留分叉与合并节点 | 完全线性,一条直线,无多余节点 |
| 提交 Hash | 原始提交保持不变 | 生成全新 Hash,重写提交历史 |
| 冲突解决 | 一次性解决所有冲突 | 逐个提交解决,可能多次处理同一文件 |
| 安全性 | 极高,不修改已有提交,适合公共分支 | 有风险,改写历史,严禁用于已推送的公共分支 |
| 适用场景 | 公共分支集成、保留真实协作脉络 | 本地功能分支整理、PR 前清理提交、同步上游代码 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)