版本控制工具——Git

版本控制工具------Git


前言

Git相关知识我是看的B站GeekHour老师的视频学的,亲测是我个人觉得讲得最能听懂的一位!推荐推荐(其他老师也都很厉害,是我太菜🥹),以下是做的学习笔记
GeekHour老师的一小时Git教程链接

一、版本库

版本库(仓库)简称Repo,可以理解为一个目录,这个目录下所有文件都可以被git管理起来,每个文件的修改、删除、添加等操作,git都能够跟踪到,以便任何时候都可以追踪历史或者还原到之前的某个版本

创建仓库的两种方式:
git init :在电脑本地创建仓库
git clone:从github这种远程服务器上克隆一个已经存在的仓库

二、git的工作区域和文件状态

git的本地数据分为三个区域:工作区(实际操作的本地工作目录)、暂存区(用于保存即将提交到git仓库的修改内容)和本地仓库(git存储代码和版本信息的主要位置)

三、添加和提交文件

git init:创建仓库

git status:查看仓库状态

git add:添加到暂存区,如:

git add file1.txt

git add *.txt 将当前文件夹下所有txt格式的文件都添加到暂存区

git add . 将当前文件夹下的所有文件都添加到暂存区

git commit:提交到仓库 (git commit -m"第二次提交")

【注】不加-m的话就会进入图形界面来进行提交

git log 查看仓库提交记录(git log --oneline可查看简洁的提交记录)

四、回退版本:git reset --模式 版本号

选择soft、hard、mixed三种模式,决定了在回退版本后,工作区和暂存区的内容是否会被清空:

工作区 暂存区
git reset --soft 不会清空 不会清空
git reset --hard 会清空 会清空
git reset --mixed 不会清空 会清空

【注1】就算回退到原始版本了,也可以通过 git reflog命令查看各个版本号,再通过git reset来回到新版本号就行了

【注2】git reset --模式 HEAD^ 表示快捷地回退到上一个版本号

五、查看差异:git diff

查看工作区、暂存区、本地仓库之间的差异:

git diff:查看工作区与暂存区的差异,显示发生更改的文件以及更改的详细信息,没有返回内容就说明没有差异

git diff HEAD:比较工作区和库之间的差异

git diff CACHED:比较暂存区和库之间的差异
查看不同版本之间的差异:

git diff 版本号1 版本号2

git diff HEAD~ HEAD(或者git diff HEAD^ HEAD ):直接比较最新版本和上一个版本

git diff HEAD~2 HEAD:直接比较最新版本和上两个版本

git diff HEAD~ HEAD file1.txt:比较最新版本和上一个版本中file1.txt的差异
也可查看不同分支之间的差异

六、从版本库中删除文件

方式一:直接删除文件后提交

首先在本地工作区删除文件,再在暂存区中删除(使用的是add:git add .),再提交

方式二:git rm

在工作区、暂存区同时删除了

csharp 复制代码
git rm file2.txt

【注1】一定要记得删除后要提交,库中的文件才会删除

【注2】git rm --cached file.txt就只会在版本库中将其删除

七、.gitignore:git中的特殊文件

让我们忽略掉一些不该被添加到版本库中的文件

一般会忽略掉 系统或软件自动生成的文件;编译产生的中间文件和结果文件;运行时生成日志文件、缓存文件、临时文件;涉及身份、密码、口令、秘钥等敏感信息文件

举例:将access.log这个文件忽略掉:

csharp 复制代码
echo access.log>.gitignore

【注】.gitignore生效有个前提:这个文件不能是已经被添加到版本库中的文件,要想忽略它就必须先从库中删除

八、Git、GitHub跟Sourcetree的关系

Git是基础的版本控制工具;GitHub是基于Git构建的线上社区和仓库托管平台,让开发者能够相互协作和分享;而Sourcetree则是为了简化和提升Git操作体验的图形化客户端工具

九、Github基础使用

生成SSH KEY

克隆仓库:git clone github上的仓库名

在本地库中更新文件,使用git push推送更新的内容

拉取更新内容:git pull

十、关联本地仓库和远程仓库

本地已经有了一个仓库,怎么放到远程仓库:

cd到该仓库地址下

依次复制粘贴运行github上提示的代码:

csharp 复制代码
git remote add origin git@github.com:geekhall-laoyang/first-repo.git
git branch -M main
git push -u origin main

十一、分支简介

多个开发人员可以在自己的分支上进行开发工作,最后再合并到主线上,或者建立一个问题修复的分支来处理一些bug和缺陷,这样就可以让主线代码仓库始终处于一个稳定状态,让每个人员可以独立地开发和测试

git branch :查看当前处于哪个分支上,并且一共有哪些分支

git branch 分支名 : 可以创建一个分支,但此时还没有切换到该分支上

git switch 分支名 :可以切换到该分支上

git merge 分支名 :切换到main分支上后,使用该命令可以将指定的分支合并到main上

git branch -d 分支名 : 删除已经合并到main上的某个指定分支

git branch -D 分支名 :强制删除某个指定的分支,就算它没有合并到main也可以删除

十二、解决冲突

如果两个分支有重复内容的话(两个分支修改了同一个文件的同一行代码),git就不知道该保留哪个分支的修改内容了,也就产生了冲突,就需要手动去解决

十三、rebase和回退

rebase:变基

git rebase 分支名

什么情况下使用rebase:一般来说,如果只是想把两个分支合并起来而不关心提交历史,那就使用merge,如果确定只有自己一个人在这个分支上进行开发,且希望提交历史更直观明了一些就使用rebase

1、merge要先切换到main分支上再执行merge操作,而rebase可以在任意分支上执行

2、merge优点:不会破坏原分支的提交历史,方便回溯和查看;merge缺点:会产生额外的提交节点,分支图比较复杂

3、rebase优点:不会新增额外的提交记录,会形成线性历史,比较直观干净;rebase缺点:会改变提交历史,改变了当前分支的节点,避免在共享分支时使用(一般不会在公共的分支上执行rebase操作)

回退:

将某个已删除的指定分支恢复到某个指定提交时间点的状态:git checkout -b 分支名 提交id

(将仓库恢复到指定提交时间点的状态使用上述的reset)

十四、分支管理和工作流模型

1、常见的工作流模型:

GitFlow模型:

GitHubFlow模型:

2、分支的命名规范

推荐使用带有意义的描述性名称来命名分支

版本发布分支/Tag示例:v1.0.0

功能分支示例:feature-login-page

修复分支示例:hotfix-#issueid-desc

3、分支管理

定期合并已经成功验证的分支,即使删除已经合并的分支,保持合适的分支数量,并为分支设置合适的管理权限

相关推荐
作孽就得先起床38 分钟前
cesium for unity的使用
unity·游戏引擎
油泼辣子多加1 小时前
2024年11月17日Github流行趋势
github
海里有太阳2 小时前
gitHub常用操作
github
爱串门的小马驹2 小时前
git,ssh免密公钥配置,gitee为例,GitHub,gitlab同理
运维·git·ssh
量子孤岛2 小时前
建立独一无二的GitHub Profile
github
亦枫Leonlew2 小时前
微积分复习笔记 Calculus Volume 1 - 6.3 Volumes of Revolution: Cylindrical Shells
笔记·数学·微积分
吃着火锅x唱着歌2 小时前
Redis设计与实现 学习笔记 第十八章 发布与订阅
redis·笔记·学习
好评笔记2 小时前
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
人工智能·笔记·算法·机器学习
小小小妮子~2 小时前
掌握Git分布式版本控制工具:从基础到实践
分布式·git