当前位置: 首页 > news >正文

Git零基础到入门

一、开始工作区

  1. clone: 克隆一个仓库到新的目录。

    git clone https://github.com/username/repository.git
  2. init: 创建一个新的空 Git 仓库或重新初始化现有的仓库,新建git项目。

    //创建项目两种方式
    //一、本地项目自己创建项目,先创建好工作文件夹,通过init指定,生成隐藏.git文件即为管理成功
    //二、多人协作,本地clone下来
    git init myproject
    cd myproject

二、当前工作上的变更(增删改)

  1. add: (增)将文件内容添加到索引(准备提交)。

    git add file.txt//添加文件从工作区到暂存区,类似svn选中文件,多了一步
    git status//查看文件管理状态
    git commit//从暂存区提交到本地仓库,输入提交备注:wq保存,类似svn点击ok提交git commit -a//合并添加并提交两步
  2. mv: (改)移动或重命名文件、目录或符号链接。

    git mv file.txt newfile.txt //改名
    git commit //提交改名
  3. restore: 恢复工作树中的文件。

    git restore file.txt
  4. rm: (删)从工作树和索引中删除文件。

    git rm file.txt//删除文件
    git commit//提交删除
    

三、查看历史和状态

  1. bisect: 使用二分查找来定位引入错误的提交。

    git bisect start
    git bisect bad
    git bisect good v1.0
    # 测试代码,直到找到引入错误的提交
    git bisect reset
  2. diff: 显示提交之间的差异,提交与工作树之间的差异等。

    git diff
    git diff --cached
    git diff HEAD~1 HEAD
  3. grep: 打印匹配模式的行。

    git grep "search_term"
  4. log: 显示提交日志。

    git log//查看提交记录
    git log --oneline//每条记录一行显示
    git log --author="John Doe"//查看提交记录为john的
    git log -help //查看日志常用帮助
    git log -n//查看几条 
    git log -state //统计具体改进
    git log --grep='test'查看提交记录中含有test的
  5. show: 显示各种类型的对象。

    git show HEAD
    git show 1234abcd
  6. status: 显示工作树的状态。

    git status

四、发展、标记和调整公共历史

  1. backfill: 在部分克隆中下载缺失的对象。

    git backfill
  2. branch: 列出、创建或删除分支。

    git branch//列出所有分支
    git branch new-feature//创建一个新的分支new-feature
    git checkout new-feature//切换到新的分支
    git checkout -b new-feature//合并上面两步的操作
    git branch -d old-feature//删除指定分支
  3. commit: 记录对仓库的更改。

    git commit file1.name file2.name file3.name .. –m "commit messages"
    //commit指提交修改到本地的仓库里,file*.name指的是带commit的文件 
    //–m后面的内容指提交的信息,即备注。git commit –a –m "commit messeages"
    //添加的-a参数会把当前暂存区里所有的修改(包括删除操作)都提交git commit
    //可能有时候手抖忘记输入-m参数,直接输入了git commit,于是出现了下面这个界面,即打开了一个vim编辑
    //界面,敲入i键后保存,输入要添加的message后,输入“ESC”按键退出编辑界面,然后再敲入“:wqa”后会保存
    //message内容,并且提交此次修改,如果敲入“:q”会取消这次提交。git commit --amend
    //把此次提交追加到上一次的commit内容里,并且会回显上次的commit的内容。git commit -m "Add new feature"//提交及备注git commit -am "Fix typo"//合并commit(回退commit到指定版本,重新提交一次)
    reset --soft commitid//修改历史提交记录
    git rebase -i 428726c//先输入rebase插入到指定提交版本
    修改pick为edit
    git commit --amend//修改后提交
    git rebase --continue//提交后再次执行
  4. merge: 合并两个或多个开发历史。

    git merge feature-branch
  5. rebase: 在另一个基础之上重新应用提交。

    git rebase main//变动根基到main
  6. reset: 将当前 HEAD 重置为指定状态。

    git reset --hard HEAD~1
    git reset --soft HEAD~1
    git reset --mixed HEAD~1
  7. switch: 切换分支。

    git switch main
    git switch -c new-feature
  8. tag: 创建、列出、删除或验证一个由 GPG 签名的标签对象。

    git tag v1.0
    git tag -l
    git tag -d v1.0
    git tag -s v1.0 -m "Release version 1.0"

五、协作开发命令

  1. fetch: 从另一个仓库下载对象和引用。

    git fetch //执行后更新了本地提交记录
    git status//再执行此句,可以看到领先落后情况
    git pull//落后拉取
  2. pull: 从另一个仓库或本地分支获取并合并。

    git pull
  3. push: 更新远程引用及其关联的对象。

    git commit -a//先增加到本地仓库
    git push //再推送到远端仓库

注意:协作开发先clone,clone输入远端仓库的账号和密码,拉去成功后,可以通过git config配置域

六、其他有用的命令

  1. help -a: 列出所有可用的子命令。

    git help -a
  2. help -g: 列出一些概念指南。

    git help -g
  3. git config:用于配置提交者邮箱和用户名       
    git config --global user.name
    git config --get user.name

系统级配置 (--system): 影响所有电脑用户(admin和user)和所有仓库,适合系统管理员设置全局默认值。
全局级配置 (--global): 影响当前电脑用户(user1)的全部仓库,适合用户设置个人偏好。     
仓库级配置 (--local 或默认): 仅影响当前仓库,适合项目团队成员设置项目特定的配置,在指定仓库指定名字提交

七、HEAD 的概念

1.指向当前分支的最新提交:

HEAD 总是指向当前分支的最新提交。

例如,如果你在 main 分支上,HEAD 就会指向 main 分支的最新提交。

2.动态变化:

每当你进行一次提交、切换分支、合并或变基等操作时,HEAD 都会更新,指向新的最新提交。

3.HEAD 的常见用法

查看当前 HEAD 指向的提交:

git show HEAD

回退到上一个提交:

git reset HEAD^ //回退一步,几个^就是回退几步
git reset --mixed HEAD^ //暂存区被重置,但工作目录中的文件内容保持不变,即撤销了add和commit
git reset --soft HEAD^//暂存区和工作目录不变,所有更改仍然在暂存区中,即撤销了commit。
git reset --hard HEAD^//重置暂存区和工作目录,永久删除未提交的更改,即撤销了add和commit和更改内容
git reset --hard HEAD~3//回退3个记录
  • HEAD^ 表示 HEAD 的前一个提交。
  • HEAD~1 也表示 HEAD 的前一个提交。

回退到前几个提交:

git reset HEAD~3
  • HEAD~n 表示 HEAD 的前 n 个提交。

切换到某个特定的提交:

git checkout 51363e6
  • 使用 git checkout 命令可以切换到某个特定的提交。

创建一个新的分支并指向某个提交:

git checkout -b new-branch 51363e6

4.HEAD 的特殊用途

解决冲突:

  • 在合并或变基过程中,HEAD 指向的是当前的工作分支,而 MERGE_HEAD 或 REBASE_HEAD 指向的是正在合并或变基的分支。

恢复文件:

git checkout HEAD -- path/to/file
  • 使用 HEAD 可以恢复工作目录中某个文件的最新版本。

八、协调解决实践原则

  1. 发生冲突时,拉同事一起看,不要自己决定
  2. 需要CR,快速对比差异
  3. 分支名要有意义,不要反复用
  4. 分支不要搭便车,功能清晰且独立
  5. 上线就打tag
  6. 优先用merge而不是rebase,否则会丢掉提交时间信息
  7. commit message要有意义,事半功倍
  8. 不要每2行就提交一次导致commit过多

九、commit message原则

1.AngularJS Git Commit Message 规范
        <type>(<scope>):<subject>
        <BLANK LINE>
        <body>
        <BLANK LINE>
        <footer>

2.规范解释

字段描述示例
type提交类型featfixdocsstylerefactortestchore
scope变动范围authenticationuser-interfacedatabase
subject简要描述本次变动implemented new login flow using OAuth 2.0
body详细描述变更情况Several improvements made to the authentication module:<br>- Updated API endpoints for better security practices.<br>- Implemented OAuth 2.0 for user authentication.<br>- Added error handling for invalid credentials.<br>- Improved documentation for developers.
footer可忽略Close #123

3.例子 

feat(authentication): implemented new login flow using OAuth 2.0Several improvements made to the authentication module:
- Updated API endpoints for better security practices.
- Implemented OAuth 2.0 for user authentication.
- Added error handling for invalid credentials.
- Improved documentation for developers.
  • Typefeat 表示这是一个新功能的引入。
  • Scope(authentication) 表示这是认证模块的更改。
  • Subjectimplemented new login flow using OAuth 2.0 描述了本次提交的主要内容。
  • Body: 列出了具体的改进措施,包括更新API端点以提高安全性、实施OAuth 2.0用户认证、增加无效凭据的错误处理以及改善开发者文档。

 

相关文章:

Git零基础到入门

一、开始工作区 clone: 克隆一个仓库到新的目录。 git clone https://github.com/username/repository.git init: 创建一个新的空 Git 仓库或重新初始化现有的仓库,新建git项目。 //创建项目两种方式 //一、本地项目自己创建项目&#xff0c;先创建好工作文件夹&#xff0c;通…...

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 区别

HTTP 1.0、HTTP 1.1 和 HTTP 2.0 是超文本传输协议&#xff08;HTTP&#xff09;不同版本的规范&#xff0c;各自进行了多项更新和改进&#xff1a; 1. HTTP/1.0 单一请求-响应&#xff1a;每次请求都需要建立一个新的 TCP 连接&#xff0c;完成后立即断开。无状态连接&#…...

解决 ElSelect 数据量大导致加载速度慢

遇到一个性能相关的问题&#xff0c;使用 Element Plus 的 <ElSelect> 组件在数据量很大时&#xff0c;加载速度变慢。 下面简单分析下原因&#xff0c;并提供了一些解决方法。 1. 问题分析 1、大量 DOM 节点渲染 问题&#xff1a;当数据量非常大时&#xff0c;每一个…...

在 CentOS 系统中,您可以使用多种工具来查看网络速度和流量

在 CentOS 系统中&#xff0c;您可以使用多种工具来查看网络速度和流量 在 CentOS 系统中&#xff0c;您可以使用多种工具来查看网络速度和流量1. 使用 iftop安装 iftop使用 iftop 2. 使用 nload安装 nload使用 nload 3. 使用 vnstat安装 vnstat初始化 vnstat查看流量 4. 使用 …...

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09; 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…...

使用 PyTorch 实现 AlexNet 进行 MNIST 图像分类

AlexNet 是一种经典的深度学习模型&#xff0c;它在 2012 年的 ImageNet 图像分类比赛中大放异彩&#xff0c;彻底改变了计算机视觉领域的格局。AlexNet 的核心创新包括使用深度卷积神经网络&#xff08;CNN&#xff09;来处理图像&#xff0c;并采用了多个先进的技术如 ReLU 激…...

Python爬虫项目 | 一、网易云音乐热歌榜歌曲

文章目录 1.文章概要1.1 实现方法1.2 实现代码1.3 最终效果 2.具体讲解2.1 使用的Python库2.2 代码说明2.2.1 创建目录保存文件2.2.2 爬取网易云音乐热歌榜单歌曲 2.3 过程展示 3 总结 1.文章概要 学习Python爬虫知识&#xff0c;实现简单的一个小案例&#xff0c;网易云音乐热…...

【Linux】HTTP协议和HTTPS加密

文章目录 HTTP1、概念2、认识URL3、协议格式、请求方法和状态码4、HTTP请求和响应报头5、Cookie和Session HTTPS1、对称和非对称加密2、对称非对称加密安全分析3、证书 HTTP 1、概念 我们在应用层定制协议时&#xff0c;不建议直接发送结构体对象&#xff0c;因为在不同的环境…...

Linux编辑/etc/fstab文件不当,不使用快照;进入救援模式

目录 红帽镜像9救援模式 现象 解决 第一步&#xff1a;修改启动参数以进入救援模式 第二步&#xff1a;进入救援模式、获取root权限、编辑/etc/fstab文件 第三步&#xff1a;编辑好后在重启 下面是ai给的模板 红帽镜像9救援模式 编辑/etc/fstab不当时 17 /dev/nvme0n3p1…...

ubuntu升级postgres

已经有了postgres12&#xff0c;记录一下升级从postgres12升级到15的过程及遇到的一些问题&#xff0c;我没有备份&#xff0c;单纯升级 1、升级过程 深色版本 sudo systemctl stop postgresql 升级PostgreSQL 停止PostgreSQL服务&#xff1a; 停止当前版本的PostgreSQL服务…...

vue2在el-dialog打开的时候使该el-dialog中的某个输入框获得焦点方法总结

在 Vue 2 中&#xff0c;如果你想通过 ref 调用一个方法&#xff08;如 inputFocus&#xff09;来聚焦一个输入框&#xff0c;确保以下几点&#xff1a; 确保 ref 的设置正确&#xff1a;你需要确保在模板中正确设置了 ref&#xff0c;并且它指向了你想要操作的组件或 DOM 元素…...

SpringBoot(十七)创建多模块Springboot项目

在gitee上查找资料的时候,发现有不少Springboot项目里边都是嵌套了多个Springboot项目的。这个玩意好,在协作开发的时候,将项目分成多个模块,有多个团队协作开发,模块间定义标准化通信接口进行数据交互即可。 这个好这个。我之前创建的博客项目是单模块的SpringBoot项目,…...

Vue.js 高质量翻页功能的完整开发指南

文章目录 Vue.js 翻页组件的完整开发与优化指南前言分析分页需求与设计要点基础分页功能的实现分页逻辑 优化分页&#xff1a;封装为组件化设计组件化代码 提升用户体验与性能动态调整每页显示的条目数优化移动端与桌面端的展示高性能翻页策略&#xff1a;按需加载与懒加载提示…...

android dvr黑屏

问题现象&#xff1a;dvr拍摄的图片是黑的&#xff0c;没有buffer数据的。 查看相关的log文件发现&#xff1a; video surface 未释放导致 祥见一下报错信息&#xff1a; 38298 2024-10-16 01:02:51.855 4056 32068 W MediaCodecRenderer: java.lang.IllegalStateExcepti…...

css文字间距撑满横向距离

效果&#xff1a; 代码&#xff1a; 、 text-align:justify;text-align-last: justify;...

【Unity基础】对比OnCollisionEnter与OnTriggerEnter

在Unity中&#xff0c;OnCollisionEnter 和 OnTriggerEnter 是两种用于处理碰撞的回调函数&#xff0c;但它们的工作方式和使用场景有所不同&#xff1a; 1. OnCollisionEnter 触发条件&#xff1a;当一个带有 Collider 组件并且**未勾选“Is Trigger”**的物体&#xff0c;与…...

算法训练(leetcode)二刷第二十五天 | *134. 加油站、*135. 分发糖果、860. 柠檬水找零、*406. 根据身高重建队列

刷题记录 *134. 加油站*135. 分发糖果860. 柠檬水找零*406. 根据身高重建队列 *134. 加油站 leetcode题目地址 当前站点可以剩余油量gas[i] - cost[i]; 将每站的剩余油量求和计算累计剩余油量&#xff0c;总剩余油量小于0&#xff0c;则无法行驶一周。 若在到达某一站时累计剩…...

Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接

目录 前言一、引用依赖二、使用步骤1.Controller2.Service接口3.实现类三、请求接口及结果前言 本文实现 Springboot 整合 itext 实现PDF文件合并,图片转PDF拼接。 一、引用依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-co…...

TypeScript 中的 ! 和 ? 操作符

在 TypeScript 中&#xff0c;! 和 ? 是两个非常重要且常用的操作符&#xff0c;分别用于非空断言和可选链操作。下面简单介绍一下二者。 1. 非空断言操作符 ! 1.1 含义 非空断言操作符 !&#xff08;Non-null assertion operator&#xff09;用来告诉 TypeScript 编译器&a…...

开源三代示波器的高速波形刷新方案开源,支持VNC远程桌面,手机,Pad,电脑均可访问(2024-11-11)

说明&#xff1a; 1、本来这段时间是一年一度Hackaday硬件设计开源盛宴&#xff0c;但hackaday电子大赛在去年终结了。所以我开源个我的吧。 2、三代示波器的高速波形刷新方案&#xff0c;前两年就做好了&#xff0c;这两年忙H7-TOOL的更新比较多&#xff0c;三代示波器的更新…...

谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报

Google 宣布推出适用于 Android 的新安全功能&#xff0c;可实时防御诈骗和有害应用。 这些功能由先进的设备内置 AI 提供支持&#xff0c;可在不损害隐私的情况下增强用户安全性。 这些新的安全功能首先在 Pixel 上推出&#xff0c;并将很快在更多 Android 设备上推出。 诈…...

AI换人脸facefusion项目口型同步‌API化改造及部署

一. 简介 ‌FaceFusion‌是一款强大的AI换脸软件&#xff0c;它支持图片、视频以及直播换脸&#xff0c;官方将其称为“下一代脸部交换器和增强器”。FaceFusion的最新版本为2.6.1&#xff0c;这个版本在原有基础上增加了更多的模型和高清算法&#xff0c;显著提升了图片和视频…...

移动端问题

这里只是做一个记录&#xff0c;不一定大家都会有问题&#xff0c;参考就行 一、页面回弹 苹果有&#xff0c;安卓没有 解决&#xff1a;pages.json下 app-plus { bounce: none} 关闭回弹效果 二、onreachBottom触底生命周期&#xff0c;ios无法触发 修改触底数值&#xff1a…...

Linux网络——网络初识

目录 1. 认识协议 2. 协议的分层 3. OSI 七层模型 && TCP/IP 五层(四层)模型 4. 网络传输的基本流程 5. 以太网的通信原理 6. 数据的跨网络传播 7. 认识 IP 地址 ① IP 是什么 ② IP 与 MAC 的关系 ③ 为什么需要 IP 在谈及网络之前&#xff0c;我们要先对学…...

从华为到创业公司

我有一个朋友&#xff0c;在华为工作了很长一段时间&#xff0c;一年多前&#xff0c;他从华为出来到了一家创业公司。 周末趁着有时间&#xff0c;我跟他聊了下关于从华为到创业公司的一些问题&#xff0c;总结给大伙看看。 ▎1 在华为工作和在创业公司工作最大的差别是什么呢…...

Vue 组件通信及进阶语法

文章目录 一、scoped 样式冲突二、data 是一个函数三、组件通信1. 父子通信1.1 props 校验1.2 props 比较 data 2. 非父子通信2.1 event bus2.2 provide-inject 四、进阶语法1. v-model 详解2. sync 修饰符3. ref 和 $refs4. $nextTick 一、scoped 样式冲突 注意点&#xff1a;…...

vue文本高亮处理

在vue的v-for循环中处理搜索关键字高亮问题&#xff0c;通过截取文字判断&#xff0c;分成三段拼接起来 <div class"check-list" v-if"shopList.length >0"><a-checkbox change"onChangeShop($event,item)" :checked"checkedL…...

androidstudio入门到放弃配置

b站视频讲解传送门 android_studio安装包&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 下载安装 开始创建hello-world 1.删除缓存 文件 下载gradle文件压缩&#xff1a;gradle-8.9用自己创建项目时自动生成的版本即可&#xff0c;不用和我一样 https://…...

NLP论文速读(谷歌出品)|缩放LLM推理的自动化过程验证器

论文速读|Rewarding Progress: Scaling Automated Process Verifiers for LLM Reasoning 论文信息&#xff1a; 简介&#xff1a; 这篇论文探讨了如何提升大型语言模型&#xff08;LLM&#xff09;在多步推理任务中的性能。具体来说&#xff0c;它试图解决的问题是现有的基于结…...

【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1

1.使用快捷键CtrlAltT打开命令终端&#xff0c;或者单击右键点击… 2.常用shell命令 目录信息查看命令&#xff1a;ls ls -a&#xff1a;显示目录所有文件及文件夹&#xff0c;包括隐藏文件&#xff0c;比如以.开头的 ls -l&#xff1a;显示文件的详细信息 ls -al&#xff1…...