【项目管理git】git学习

server/2025/3/19 0:39:58/

ps:所有东西都是个人理解

文章目录

  • 一、git是什么,它用来做什么?
  • 二、相关知识库
    • 2.1 简单的linux指令
    • 2.2 git配置指令
    • 2.3 git常见的指令
      • 2.3.1 Git的上传原理
      • 2.3.2 版本回退相关内容
    • 2.4 设置远程地址,本地上传到github
      • 2.4.1 ssh相关原理
      • 2.4.2 设置远程地址并配置

git_2">一、git是什么,它用来做什么?

都知道,在公司里面往往一个项目会由多个人共同协同编写,所以需要一个可以文件互通的渠道,之前用的是svn或者cvs。这个svn它就相当于是有个中央服务器,开发人员把代码写完之后提交到中央服务器。git就相当于是每个开发人员的主机上都可以保存文件,每一个节点都有完整的代码库。
对于个人来说,利用git来管理项目也很不错,比如说,我们需要修改一个功能代码,改之后发现不能用,这时候我们就可以利用git reset功能来恢复到前一个版本,然后后面觉得这个版本有用了又可以回到这个版本。所以fei chang you y

二、相关知识库

2.1 简单的linux指令

ls    #查看当前目录
cat   #查看文件内容
cat 文件1 文件2… > 汇总文件  #可以将前面的文件内容汇总到汇总文件中touch #创建文件
mkdir #创建文件夹rm a.txt  #删除文件
rmdir a   #删除文件夹vi 文件名    #vi编辑器
pwd   #显示当前操作的路径grep [选项] [模式] [文件]  #搜索
# 这里的选项可以是 -n 显示行号 -i 不区分大小写 -v 取反,即不包含需要的内容的行cp a b #复制文件,将a文件夹整体复制到b文件夹下
cp a/* b #将文件夹a下的所有文件都复制到b文件夹下mv a b #将a文件夹整体移动(剪切)到b文件夹下

结果展示
vi编辑器,有三种模式:普通模式,插入模式以及命令模式。
普通模式:用于浏览文件、移动光标、删除以及复制等操作。
插入模式:用于输入文本,像常规文本编辑器一样编辑文件内容。
命令模式:用于执行文件操作命令,如保存、退出、查找和替换等。
在这里插入图片描述
保存文件

#普通模式下输入
:w #保存当前文件
:w Newfie.txt #将文件保存到新的文件中
:q #仅退出文件
:wq #保存并退出
:q! #强制退出(不保存)

git_45">2.2 git配置指令

设置和查看用户邮箱和用户名

git config —global user.name "设置的用户名"  #设置用户名
git config —global user.name #查看用户名
git config —global user.email "设置的邮箱"
git config —global user.email #查看邮箱

初始化git本地仓库

git init

git_57">2.3 git常见的指令

2.3.1 Git的上传原理

<a class=git工作机制" />
git将提交文件的工作步骤区间分为工作区、暂存区以及仓库。从工作区到暂存区。

git ls-files -s #查看暂存区的文件列表
git ls-tree -r HEAD #查看仓库当前版本的文件列表

使用git add指令提交文件,从暂存区到仓库,使用的是git commit。其中从工作区到暂存区,我们可以一个一个文件上传,也可以整个文件夹上传,而git commit指令是一次性将暂存区中的所有修改内容均上传到仓库中。如下图所示。从这里我们也可以看出暂存区的作用是什么。svn中有一个概念叫做原子性提交,即要么这个操作内所有指令均操作,要不就均不操作。这里的暂存区就类似提交前的预览区,提供给用户试错成本。

git add 文件1 #将文件1提交到暂存区
git add . #将所有文件提交到暂存区
git status #查看当前git各个步骤区间文件状态
Git commit -m “对于本次操作的描述" #将暂存区的所有文件提交到仓库中,这里的-m是指messagegit log #查看历史提交记录
# git log [options] 这里的options 可以是 
# —all 显示所有分支
# —pretty=oneline 将提交信息显示为一行
# —abbrev-commit 使得输出的commitId更简短
# —graph 以图的形式显示

<a class=git工作机制" />
在这里插入图片描述

2.3.2 版本回退相关内容

git reset
git reset的作用:

  1. 撤销暂存区的更改:取消已加入暂存区(即staged)的文件。
  2. 撤销工作目录的更改:将工作目录中的文件恢复到某个指定的提交状态。
  3. 修改分支历史:通过改变分支的HEAD指针,来修改历史提交。

1) 文件的reset

#git reset <file> 可以将用git add添加到暂存区的文件

在这里插入图片描述
2)版本的reset

git reset [选项] 回退的版本号
git reset —hard 回退的版本号  #这个版本号可以去git log中寻找
# —hard 重置位置的同时,直接将working Tree工作目录、index暂存区及repository都重置成目标reset节点的内容,所以效果看起来等同于清空缓存区和工作区。
# —soft 重置位置的同时,保留working Tree工作目录和Index暂存区的内容,只让repository中的内容和reset目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入Index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
# —mixed(默认) 重置位置的同时,只保留working Tree工作目录的内容,但会将Index暂存区和Repository中的内容更改和reset目标节点一致,因此原节点和Reset节点之间的所有差异都会放到暂存区中。

在这里插入图片描述

github_102">2.4 设置远程地址,本地上传到github

这个首先需要连接本地与你的github仓库。这里选择的是ssh连接。

2.4.1 ssh相关原理

ssh登录原理
在这里插入图片描述
首先需要生成 ssh key
1) 创建ssh key

ssh-keygen -t rsa -C "github邮箱"

在这里插入图片描述
2) pbcopy 将后面文件里面的内容复制到剪切板,并开始服务,进行相关配置

#把生成的公钥复制在粘贴板上
pbcopy < ~/.ssh/id_ed25519.pub
#开启ssh-agent服务
eval "$(ssh-agent -s)# 设置配置文件,macOS 10.12.2以上的版本
touch ~/.ssh/config
#将SSH私钥存储在密钥链中。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

将下述文本写入config文件中:

Host github.comAddKeysToAgent yesUseKeychain yesIdentityFile ~/.ssh/id_ed25519

3) 将公钥写入github ssh key中
在这里插入图片描述

2.4.2 设置远程地址并配置

#查看当前远程地址
git remote -v
#添加新的远程地址
git remote add <name> <new-remote-url>
#修改远程地址
git remote set-url <旧remote的名字> <new-remote-url>
#删除远程地址
git remote remove <name>#将本地的分支上传到远程的分支
git push [-f] <远程主机名> <本地分支名>:<远程分支名>  #选项-f是强制覆盖的意思

在这里插入图片描述
这里的密码是从github上搞下来的token。
在这里插入图片描述
复制ssh远程地址,从仓库中提取。
在这里插入图片描述
2.5 添加文件至忽略列表
在文件夹下建立.gitignore文件。在文件里面写要忽略的文件。

2.6 git分支相关内容

#查看现有分支 view-existing-branch
git branch#创建新分支 — create a new branch
git branch <new-branch-name>#切换分支 switch branch
git checkout <target-branch-name>#切换并创建分支(如果不存在) —switch and create branch(if not exist) 
git checkout -b <branch-name>#分支合并 一个分支上的提交可以合并到另一个分支上 <merge the target branch into the current branch>
git merge <branch-name> #删除分支  —delete branch
git branch -d <branch-name>  #会做各种检查
git branch -D <branch-name>  #直接强制删除,不做任何检查  这个使用的场景是,你想要删除没有merge掉的分支,就是你修改的内容没有添加到主分支上的内容#显示分支信息
git branch -vv 
#功能1: 显示远程跟踪分支的信息,即本地分支与远程分支的对应情况
#功能2: 显示每个分支的最新提交信息
#功能3: 显示当前所在分支,’*’#将当前分支绑定到远程分支 —connect current local branch with the corresponding remote branch
git branch —set-upstream-to <远程仓库名>/<远程仓库分支名>

在这里插入图片描述
2.7 clone 克隆仓库到本地

git clone +远程地址名  #它默认是克隆下所有分支,想去特定的分支直接git checkout <分支名>就行#将远程地址的更新抓取到本地
git fetch
#将抓取到的更新合并到当前分支
git merge origin/master#抓取并合并到当前分支
git pull

在这里插入图片描述
git merge合并的快进模式
在这里插入图片描述


http://www.ppmy.cn/server/176096.html

相关文章

QT编程之HTTP服务端与客户端技术

一、HTTP 服务器实现方案 ‌QtWebApp 集成‌ 将QtWebApp源码的 httpserver 目录导入项目&#xff0c;并在 .pro 文件中添加 include ($$PWD/httpserver/httpserver.pri)‌。配置 WebApp.ini 文件定义服务参数&#xff08;IP、端口、线程池等&#xff09;&#xff0c;通过 HttpL…

Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构

一、引言 在分布式系统中&#xff0c;传统的 REST 调用模式往往导致耦合&#xff0c;难以满足高并发和异步解耦的需求。消息驱动架构&#xff08;EDA, Event-Driven Architecture&#xff09;通过异步通信、事件溯源等模式&#xff0c;提高了系统的扩展性与可观测性。 作为 S…

C++ primer plus 类和对象下

目录 前言 一 this指针 二 对象数组 三 类作用域 总结 前言 接着上一篇继续 一 this指针 我们可能看到这个this指针是不知道干什么的&#xff0c;但是我们可以通过一个问题来引入这个&#xff0c;就比如我们上一章的程序&#xff0c;我们知道是用来计算股票的&#xf…

前端(vue)学习笔记(CLASS 4):组件组成部分与通信

1、组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; 注意点&#xff1a; 1、结构只能有一个根元素 2、全局样式&#xff08;默认&#xff09;&#xff0c;影响所有组件&#xff1b;局部样式&#xff0c;scoped下样式&#xff0c;只作用于当前组件 3、el根实例独…

平板作为笔记本副屏使用spacedesk

平板作为笔记本的一块副屏使用 软件 spacedesk 已上传&#xff0c;可自行下载。&#xff08;上传需要审核且只能绑定一个资源&#xff0c;可在官网自行下载&#xff0c;或私聊我&#xff09; PC版 移动版 spacedesk-2-1-17.apk 电脑版按照提示一步一步安装节即可移动端直接…

SpringBoot入门-(1) Maven【概念+流程】

SpringBoot入门-(1) Maven 动机 对于企业级大项目而言&#xff0c;需要手动导入很大Jar包&#xff0c;费时费力&#xff0c;且Jar包之间也可能存在依赖和冲突&#xff0c;这些关系导致Jar包之间想毛线团一样缠在一起&#xff0c;因此我们需要一个包管理系统帮我们自动下载导入…

06.Python基础4

目录 元组 tuple 1.概述 2.可变数据为什么可变 3.不可变数据如何变化 4.基础操作 4.1创建元组 4.2定位元素 4.3遍历元组 4.4序列拆包 5.字符串 str 5.1定义 5.2编码 5.2.1字符集 5.2.2编码方式 5.2.3不可变 5.3序列 5.4字面值 5.4.1单引和双引号的区别 5.4.2…

jmeter 循环控制器遍历列表中的数据

jmeter遍历列表中的数据并使用if控制器做相应的处理 测试场景请求获取列表接口发送请求JSON Extractor 提取对应字段 Loop Controller计数器If Controller 测试场景 请求获取列表接口使用循环控制器遍历接口&#xff0c;根据state字段判断是否发起其他请求 请求获取列表接口 …