首页 > 其他分享 >git学习笔记

git学习笔记

时间:2024-04-18 22:25:41浏览次数:25  
标签:文件 git 仓库 笔记 学习 暂存区 branch 分支

初始化

初始化设置用户名和邮箱

git config --global user.name "zjq" #设置用户名
git config --global user.email [email protected] #设置邮箱
git config --global credential.helper store #存储,后续无需再设置

创建仓库

git init <project-name> #创建一个新的本地仓库(省略project-name则在当前目录创建)
git clone <url> #下载一个远程仓库

三个工作区域

工作区(Working Directory):.git所在的目录,实际操作的目录
暂存区(Staging Area/Index):中间区域,用于临时存放即将提交的修改内容
本地仓库(Local Repository):git存储代码和版本信息的主要位置
image

四种文件状态

未跟踪(Untrack):新创建的,尚未被git管理起来的文件
未修改(Unmodified):被git管理起来,但文件内容没有发生变化
已修改(Modified):已修改的文件,但未添加到暂存区里面
已暂存(Staged):修改后且添加到暂存区的文件
image

添加和提交文件

git status # 查看仓库的状态
git add <filename> # 添加到暂存区
可以使用通配符,如git add *.txt
也可以使用目录,如git add .
git commit # 提交到本地仓库,注意:只会提交暂存区的文件
git log # 查看仓库提交历史记录,可以用--oneline查看简洁提交

reset回退版本 三种模式

soft:保留工作区和暂存区内容
hard:不保留工作区和暂存区内容
mixed:保留工作区内容,不保留暂存区内容
image

git diff查看差异

image

git rm删除文件

方式1:rm删除工作区文件,再删除暂存区内容

rm file #删除本地工作区文件
git add --all file #更新暂存区

方式2:使用git命令直接删除工作区和暂存区

git rm <file> #把文件从工作区和暂存区同时删除,
#要删除的文件是没有修改过的,就是说和当前版本库文件的内容相同。

git rm --cached <file> #把文件从暂存区删除,但保留在当前工作区中

git rm -r * #递归删除某个子目录下的所有子目录和文件

git ls-files 查看仓库中的文件

删除后切记要commit

.gitignore文件

应该忽略哪些文件

image

ignore文件匹配规则

image

示例

# 忽略所有的.a文件
*.a
# 但跟踪所有的lib.a文件
!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略任何目录下名为build的文件
build/
# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt
# 忽略doc/目录及其子目录下的.pdf文件
doc/**/*.pdf

提示:GitHub上提供了各种语言的gitignore的文件模板,可以修改后使用

远程仓库 Github/Gitee

配置远程仓库

生成ssh密钥

cd
cd .ssh
# 生成ssh密钥
ssh-keygen -t rsa -b 4096
# 将.pub公钥文件内容复制到远程仓库账户的密钥配置中

克隆仓库

git clone <repo-address>

向远程仓库提交内容

git push <remote> <branch>

从远程仓库拉取更新内容

git pull <remote>

关联本地仓库和远程仓库

# step1.添加远程仓库
git remote add <远程仓库名> <远程仓库地址>
# step2.提交到远程仓库
git push -u <远程仓库名> <分支名>
# 查看远程仓库
git remote -v
# 拉取远程仓库内容
git pull <远程仓库名> <远程分支名>:<本地分支名>
# 远程与本地分支名相同可省略

分支

# 查看分支列表
git branch 

# 创建分支
git branch branch-name

# 切换分支
git switch branch-name

# 合并分支
git merge branch-name

# 删除分支
git branch -d branch-name # 删除已合并的分支
git branch -D branch-name # 删除未合并的分支

合并分支时的冲突处理

merge

两个分支未修改同一个文件的同一处位置:Git自动合并
两个分支修改了同一个文件的同一处位置:产生冲突

# step1.手工修改冲突文件,合并冲突内容
# step2.添加暂存区
git add file
# step3.提交修改
git commit -m "message"
# 中止合并:当不想继续执行合并操作时可以使用下面的命令来中止合并过程
git merge --abort

Rebase

每个分支都有一个HEAD指针指向最新的提交,Rebase操作会找到两个分支的最近公共祖先结点,将git当前所在分支从最近公共祖先结点到HEAD指针嫁接到另一个分支的HEAD指针之后
image

二者对比

Merge不会破坏原分支的提交记录,方便回溯和查看;但会产生额外的提交结点,分支图较为复杂。
Rebase不会新增额外的提交记录,形成线性历史,比较直观和干净;但会改变提交历史,改变了当前分支branch out的节点,避免在共享分支时使用

分支管理和工作流模型

GitFlow模型

主线/基线分支 主要分支

包含了项目最新稳定版本的代码,应随时保证主线分支代码是可发布的,会被部署到生产环境中,不允许直接修改,只能通过合并分支

问题修复分支

从主线分支分离出来,用于解决线上bug问题,修复完成后合并回main分支
命名规则:hotfix-#issueid-desc

开发分支 主要分支

从主线分支分离出来,包含项目最新开发版本的代码,用于开发和测试

功能分支

从开发分支分离出来,包含项目最近开发的新功能,用于开发新功能

Github Flow模型

image

标签:文件,git,仓库,笔记,学习,暂存区,branch,分支
From: https://www.cnblogs.com/zjq182/p/18140164

相关文章

  • Python数据分析 Series 笔记
      002,pandas介绍  003,Series创建导入Pandas Series是一种类似于一维数组的对象,由下面两个部分组成:values:一组数据(ndarray类型)index:相关的数据索引标签(3.1)Series的创建两种创建方式:(1)由列表或Numpy数组创建默认索引为0到N-1的整数型索引 index和val......
  • 淘宝记录笔记
    工具下载地址:https://mirrors.huaweicloud.com/java/jdk/8u151-b12/4月16麒麟server版本安装WPShttps://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/11719/wps-office-11.1.0.11719-1.x86_64.rpm?t=1713262545&k=982a8181c1879f75bd3f63f94348b89e1.导入密钥......
  • 3.Java基础学习
    Java基础注释单行注释多行注释文档注释publicclassHelloworld{publicstaticvoidmain(String[]args){//单行注释////输出一个HelloworldSystem.out.println("Helloworld");/*多行注释多行注释......
  • Docker学习记录
    docker官方文档https://docs.docker.com/engine/install/ubuntu/docker全球镜像仓库https://hub.docker.com/1、docker的安装1.1、卸载旧版首先如果系统中已经存在旧的Docker,先卸载:但是不同的系统,卸载方式不一样!!!Ubuntu系统:apt-getautoremovedockerdocker-cedocker-......
  • C语言笔记
    C语言相关知识太多的缺省可见性定义C函数时,在缺省情况下函数的名字是全局可见的。可以在函数的名字前加个冗余的extern关键字。这个函数对于链接到他所在的目标文件的任何东西都是可见的。如果想限制对这个函数的访问,就必须加个static关键字。functionapple()//在任何地方均......
  • 模拟电路学习笔记——晶体管电流放大作用
    基本共射放大电路△u1为输入电压信号,接入基极——发射极回路,称为输入回路;放大后的信号在集电极——发射极回路,称为输出回路;因发射极是两个回路的公共端,故称该电路为共射放大电路晶体管工作在放大状态的外部条件:发射结正向偏置,集电结反向偏置输入回路中基极电......
  • Git提交错误后如何回滚
    查看提交历史记录gitlog回滚到指定的提交gitreset--hard%id把本地版本强推到main分支gitpushoriginmain--force相关的命令查看当前分支:gitbranch切换分支gitcheckoutbranchname创建新分支gitbranchnewbranchname关联新分支gitpush--......
  • ROS2笔记3--话题通讯
    一、话题(Topic)通讯简介话题通讯是ROS2使用频率最高的一种通信方式,有发布者发布指定话题的数据,订阅者只要订阅了该话题的数据,就可以接收到数据。话题通讯是基于发布/订阅模型,话题数据传输的特性是从一个节点到另一个节点,发送数据的对象称为发布者,接收数据的对象称为订阅者,每个话题......
  • 模拟电路学习笔记——晶体三极管(一)
    1.晶体三极管*晶体三极管中有两种带有不同极性电荷的载流子参与导电,故称为双极型晶体管(BJT:BipolarJunctionTransistor),又称半导体三极管,简称晶体管*根据不同的掺杂方式,在同一硅片上制造出三个掺杂区域,并形成两个PN结,就构成晶体管2.几张常见晶体管外形3.晶体管的结......
  • 线段树优化建图学习笔记
    关于线段树优化建图对于存在一些单点连向区间或区间连向单点的边,且直接暴力连边会爆炸的题目,就可以考虑使用线段树优化建图。边数量的规模将会是\(n\logn+a\)。例题题目链接。从\(s\)到\(t\)的最短路就是模板。如果暴力建边,最坏情况下需要建的边在\(n^2\)级别,显然是......