Git使用速通

news2024/12/26 1:12:32

目录

  • 一、Git相关配置
    • 系统配置文件存放处
    • 用户配置文件所在地
    • 用户名称和e-mail地址
  • 二、初始化仓库
    • `git init`——初始化仓库
    • `git status`——查看仓库的状态
    • `git add`——向暂存区中添加文件
    • `git commit`——保存仓库的历史记录
  • 三、版本回退与文件修改
    • `git log`——查看提交日志
    • `git reflog` 查看以往的各个操作的哈希值
    • `git rest --hard`(哈希值)回溯历史版本
    • `git diff`——查看更改前后的差别,查看工作区和暂存区差异
    • `git checkout -- file` 丢弃工作区的修改
    • `rm` 文件 删除文件
  • 四、远程仓库
    • 获取密钥
    • 创建仓库
    • 推送远程
    • 查看远程库信息
    • 删除远程库
    • 推送抓取分支
    • 小结
  • 五、[Rebase](https://liaoxuefeng.com/books/git/branch/rebase/index.html)
  • 六、分支操作
    • `git branch`——显示分支一览表
    • `git checkout -b example`——创建、切换分支(example自起)
    • `git branch -d [branch-name]` 删除分支
    • 删除远程分支
    • `git merge example` 合并分支
      • ` git merge --no-ff feature-A`
      • `git merge --no-ff -m " "`
    • `git log --graph`以图表形式查看分支
    • 解决分支冲突
    • 存储当前分支工作现场
    • 复制
  • 七、标签管理
  • 八、Git也支持Linux操作

一、Git相关配置

查看配置 git config -l

查看系统config git config --system --list

查看当前用户(global)配置 git config --global --list

系统配置文件存放处

image-20240812210538722

image-20240812210552688

用户配置文件所在地

image-20240812210639336

用户名称和e-mail地址

当你安装Git后首先要做的事情就是这个。这是非常重要的,因为每次Git提交都 会使用该信息。它被永远的嵌入到了你的提交中:

git config --global user.name “zhang-noob” 名称

git config --global user.email 3466493941@qq.com 邮箱

而这两个可以更改

二、初始化仓库

git init——初始化仓库

git status——查看仓库的状态

作两次对比,工作区 vs 暂存区 以及 暂存区 vs 仓库,并将两次对比的结果显示在输出中。哪个对比没差别,就不显示。两个对比都没差别,就显示working tree clean。

git add——向暂存区中添加文件

  • git add . 添加文件夹中的所有文件
  • git add “要添加的东西.文件格式”

git commit——保存仓库的历史记录

  • 记述一行提交信息—>git commit -m “message” ,“message” 可以是一些备注信息
  • 记述详细提交信息—>直接执行 git commit命令,输入完成后记得保存一下,不然没用

image-20240812211115943

image-20240812211125782

若是我们修改了东西但是没有add就commit,那么新修改的东西就不会被传到仓库

如下

image-20240812211242638 image-20240812211305001

然后git commit -m “添加新的节点到链表”

然后git diff HEAD -- test.c 查看工作区和暂态区的差别发现第二次的修改未提交上去

image-20240812211424906 image-20240812211438684

三、版本回退与文件修改

git log——查看提交日志

  • 只显示提交信息的第一行—>git log --pretty=short

  • 只显示指定目录、文件的日志----->在 git log命令后加上目录名 如 git log README.md

  • 显示文件的改动 git log -p 如:git log -p README.md 按q键退出查看

  • 如果嫌输出信息太多,看得眼花缭乱的,可以试试 git log --pretty=oneline

git reflog 查看以往的各个操作的哈希值

git rest --hard(哈希值)回溯历史版本

  • git reflog 查看以往的各个操作的哈希值 或者直接用git log也行

​ 这个很好用,比如我们回退了历史,但是我们已经把这个终端关了,此时想回到最新版本就可以用这个查找哈希值

image-20240812211816294
  • 然后在git reset --hard c9a9ed2 回溯历史版本

    image-20240812212233671

  • 也可以直接 **git reset --hard HEAD^**

[!NOTE]

在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

–hard参数有啥意义?–hard会回退到上个版本的已提交状态,而–soft会回退到上个版本的未提交状态,–mixed会回退到上个版本已添加但未提交的状态。

然后用linux操作 cat 文件 来查看文件是否回到了之前的版本

​ 此时若是还想回到最新版本,就 git reset --hard 哈希值 就行了,版本号没必要写全,前几位就可以了,Git会自动去找

git diff——查看更改前后的差别,查看工作区和暂存区差异

git diff --cached 查看暂存区和仓库差异

git diff HEAD -- (要查看的文件) 查看工作区和仓库的差异

git add的反向命令git checkout 撤销工作区修改,即把暂存区最新版本转移到工作区,

git commit的反向命令git reset HEAD 就是把仓库最新版本转移到暂存区。

[!IMPORTANT]

image-20240812213112905

git checkout -- file 丢弃工作区的修改

但是本地文件不会被修改

其本质其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

image-20240812213318516

rm 文件 删除文件

image-20240812213433882

然后我们确实要删除test1.c 那就再git rm 彻底删除,然后再git commit

image-20240812213506583

四、远程仓库

创建仓库之前我们要先添加SSH密钥,先去用户目录下看看有没有.ssh的文件夹

获取密钥

image-20240812213614003

若没有,那就需要先获取密钥

ssh-keygen -t rsa -C “yourmail@example.com”


然后会在该目录下生成两个文件

id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,也是我们需要上传到github或者gitee上的密钥可以放心地告诉任何人。

image-20240812213933606 image-20240812214001729

创建仓库

这样密钥就获取成功了,接下来在github上创建一个仓库

然后在终端输入

git remote add origin git@github.com:michaelliao/learngit.git

michaelliao替换成你自己的GitHub账户名

远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程


推送远程

下一步,就可以把本地库的所有内容推送到远程库上:

git push -u origin main

image-20240812214200490

然而在提交的时候若是出现如下问题

image-20240812214300421

依次输入以下命令就好了,目前不知道为什么

git fetch origin main

git merge origin FETCH_HEAD

git pull --rebase origin main

查看远程库信息

git remote -v

删除远程库

git remote rm + 名字 命令

先用**git remote -v**查看远程库信息

image-20240812214444724

**git remote rm origin**就行了,不过这只是删除了本地和远程的联系,真正删除远程仓库需要去GitHub上

推送抓取分支

git push origin main(这里选择要推送的分支)

抓取分支就是clone,pull

image-20240812214941497

小结

image-20240812215029434

五、Rebase

  • rebase 操作可以把本地未push的分叉提交历史整理成直线;
  • rebase 的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

六、分支操作

git branch——显示分支一览表

image-20240812215357161

**‘*’**表示当前所在分支,结果中没有显 示其他分支名,表示本地仓库中只存在 main一个分支。

git checkout -b example——创建、切换分支(example自起)

切换回上一个分支---->git checkout -

image-20240812215636532

git branch -d [branch-name] 删除分支

删除远程分支

git push origin --delete [branch-name]

git branch -dr [remote/branch]

git merge example 合并分支

将指定的分支合并到当前分支上 。即将 example 分支上更改的 内容合并到 main 分支上

git merge --no-ff feature-A

​ 随后编辑器会启动,用于录入合并提交的信息,默认信息中已经包含了是从 feature-A 分支合并过来的相关内容,所 以可不必做任何更改。将编辑器中显示的内容保存,关闭编辑器

image-20240812215950075

git merge --no-ff -m " "

​ git merge --no-ff -m “merge with no-ff” dev 不使用fast forward合并,因为fast forward合并,删除分支后,会丢掉分支信息

git log --graph以图表形式查看分支

image-20240812220117999

解决分支冲突

image-20240812220324974

git log --graph --pretty=oneline --abbrev-commit

用**git log --graph**命令可以看到分支合并图。

image-20240812220352271

存储当前分支工作现场

git stash我当前分支的任务还没有完成,只是add了并不想commit,所以就先保存一下

image-20240812220520179

然后切换到其他分支上去干其他的事情,干完之后再回来,但是发现工作区是干净的,所以需要恢复

先用**git stash list**查看

image-20240812220547340

一是用**git stash apply**恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用**git stash pop**,恢复的同时把stash内容也删了

image-20240812220629432 image-20240812220638801

image-20240812220652492

复制

image-20240812220708018

七、标签管理

首先,切换到需要打标签的分支上,然后 **git tag "name"**就可以打一个标签

可以用命令**git tag**查看所有标签

也可以后加commit id号进行打标签:git tag v0.9 f52c633

可以用**git show "tagname**"来看标签的信息

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

image-20240812220828090

远程

  • 命令**git push origin "tagname"**可以推送一个本地标签;

  • 命令**git push origin --tags** 可以推送全部未推送过的本地标签;

  • 命令**git tag -d "tagname"**可以删除一个本地标签;

  • 命令**git push origin :refs/tags/"tagname"**可以删除一个远程标签。


若是要删除远程的就需要先删除本地的,然后再删除远程的即

git tag -d “tagname”

git push origin :refs/tags/“tagname”

八、Git也支持Linux操作

1)cd : 改变目录。

2)cd . . 回退到上一个目录,直接cd进入默认目录

3)pwd : 显示当前所在的目录路径。 

4ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。 

5)touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。 

6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。 

7)mkdir: 新建一个目录,就是新建一个文件夹。 

8)rm -r : 删除一个文件夹, rm -r src 删除src目录 

9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,

当然, 这样写, 必须保证文件和目标文件夹在同一目录下。 

10)reset 重新初始化终端/清屏。 

11)clear 清屏。 

12)history 查看命令历史。

13)help 帮助。 

14)exit 退出。 

15)#表示注释

4)ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。

5)touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。

6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。

7)mkdir: 新建一个目录,就是新建一个文件夹。

8)rm -r : 删除一个文件夹, rm -r src 删除src目录

9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,

当然, 这样写, 必须保证文件和目标文件夹在同一目录下。

10)reset 重新初始化终端/清屏。

11)clear 清屏。

12)history 查看命令历史。

13)help 帮助。

14)exit 退出。

15)#表示注释


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的线上售楼系统的设计与实现(论文+源码)_kaic

摘 要 现代化的线上售楼管理正在逐渐成为现代社会的重要需求,而目前的线上售楼由于存在管理不规范等缺点,严重制约了楼房和房地产公司的发展,建设一个更加规范化的线上售楼系统是十分迫切需要的。为此,使用Java语言,S…

leetCode - - - 双指针

目录 1.寻找重复数(LeetCode 287) 解法一:二分查找 解法二:快慢指针 2.验证回文串(LeetCode 125) 3.三数之和(LeetCode 15) 4.四数之和(LeetCode 18) …

Unity 麦扣 x 勇士传说 全解析 之 怪物基类与野猪(附各模块知识的链接,零基础也包学会的牢弟)(案例难度:★★☆☆☆)

通过一阵子的学习,我是这么认为的,因为该教程是难度两星的教程 ,也就是适合学了一阵子基础组件以后的学习者 (什么都不会的学习者要是学这套课程会困难重重,如果你什么都不会那么需要学习一星教程) 所以该…

基于asp.net的webform框架的校园点餐系统源码

今天给大家分享一套基于asp.net的webform框架的网页点餐系统,适合课程设计参考及其自己学习,需要的小伙伴自己参考下,下载链接我放在后面了 主要功功能 系统的主要功能包含:前端点餐页面、加入购物车、商品食物浏览、我的购 物车…

ffmpeg开发者视频剪辑器

5G 时代的来临,加速了视频类作品的创作,由于现在的流量越来越便宜,网速越来越快,特别是流量无限用套餐,大家更愿意去看视频作品,特别是抖音的兴起,更是加速了小视频的流量。不会剪辑的我们该如何…

windows安装android studio

下载 https://developer.android.google.cn/studio?hlzh-cn 安装 打开cmd输入如下命令 android-studio-2024.1.1.12-windows.exe /NCRC 注意 运行命令后可能还报错,但是会出现弹窗 如果还是报错可以选择zip 运行 不设置代理 等待下载即可,…

SAP LE学习笔记04 - MM与WM跨模块收货到仓库的流程中 如何既创建TR又同时立即在前台创建TO

上一章讲了在MM模块的IM(在库管理)中收货到仓库的流程,以及关联WM移动Type与IM移动Type。 SAP LE学习笔记03 - 在IM(在库管理)中收货到仓库的流程,关联 WM移动Type与IM移动Type-CSDN博客 本章继续将LE的其他知识。 - MM与WM跨模块收货到仓库的流程中,如…

深入探索Amazon EC2:解锁云端计算的无限可能

欢迎来到本次的实验教程,这将引导您在功能强大且充满活力的 Amazon Web Services (AWS) 云中启动并配置虚拟机。 在本次实验中,您将亲身体验如何利用 Amazon 机器映像 (AMI) 启动 Amazon EC2 实例,并掌握使用密钥对进行 SSH 认证登录实例的技…

第18 章探讨 C++新标准.可变参数模板,模板和函数参数包,展开参数包

第18 章探讨 C新标准.可变参数模板,模板和函数参数包,展开参数包 第18 章探讨 C新标准.可变参数模板,模板和函数参数包,展开参数包 文章目录 第18 章探讨 C新标准.可变参数模板,模板和函数参数包,展开参数包18.6 可变参数模板18.6.1 模板和函数参数包18.6.2 展开参数包18.6.3 …

Bootstrap个人技术博客响应式网页模板

Bootstrap个人技术博客响应式模板基于Bootstrap3.3.5制作,自适应分辨率,兼容PC端和移动端,全套模板,包括首页、关于、网页配色、内容页、友情链接、读者墙、标签云、点赞等网站模板页面。模板下载地址http://m.bokequ.com/moban/1…

我在高职教STM32——I2C通信之SHT20传感器(2)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

ubuntu基于sealos搭建k8s集群,helm3安装配置自动化扩容Prometheus,grafana出图展示,以及动态web搭建

1.项目简介 大方向:k8s云原生方向,运维技术,配置问题解决 解决技术:ubuntu模板机安装,配置远程xshell连接ubuntu,设置静态ip,换ubuntu阿里云源,配置集群间域名解析,解决双IP冲突网…

I2C的10-bit地址空间

10-bit地址空间: I2C支持 10-bit的设备地址,此时的时序如下图所示: 在 10-bit地址的 I2C系统中,需要两个帧来传输 slave的地址。第一个帧的前 5个 bit固定为 b11110,后接 slave地址的高 2位,第 8位仍然是 …

牛客面经学习笔记(四)

这种拨码开关在PLC里面很是常用: 这种弧型线就很漂亮: 这个白色按键很漂亮: 快恢复保险丝: 继电器电路: 这里的续流二极管很重要,因为继电器是感性元件: 【【必考】5招搞清楚!单点接…

关于pytorch后续学习需要下载的包太慢怎么办?tensorboard为例

启发: anaconda python3.7安装TensorFlow 1.9.0(CPU版) 和这个佬的 我是CPU版本(好像是需要找anaconda对应版本,我不知道咋找版本,不知道不同版本的对应关系) 此时,我们可以浅浅pip…

民航网上订票系统设计和实现--论文pf

TOC springboot427民航网上订票系统设计和实现--论文pf 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和…

【系统分析师】-综合知识-系统架构

1、设计模式 1)观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新【消息订阅】。在该模式中,发生改变的对象称为观察目标,被通知的对象称为观察者&…

泰坦尼克号 - 从灾难中学习机器学习/Titanic - Machine Learning from Disaster(kaggle竞赛)第二集(加载数据)

此次目的: hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!!准备出几期博客来记录我学习kaggle数据科学入门竞赛的过程,顺便也将其中所学习到的知识分享出来。这是第一集(了解赛题&#x…

Ansible可视化管理之web界面集成使用探究(未完待续)

一、前言 因某集成商管理的客户资源涉及4A接入管控要求,其中密码必须3个月更新一次,随着纳管主机的数量增多,手动去修改密码变得不现实,考虑无侵入性和资源耗用,便捷性等因素,首先选用Ansible作为此需求的…

武汉君耐营销策划有限公司员工信息管理系统pf

TOC springboot428武汉君耐营销策划有限公司员工信息管理系统pf 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这个…