git的安装、使用

news2024/12/25 2:25:00

文章目录

    • 安装git
    • git学习网站
    • git初始配置
      • 具体配置信息
    • 新建版本库(仓库)
    • git的工作区域和文件状态
      • 工作区域
      • 文件状态
        • git文件提交的基础指令
    • git基础指令
      • 1. 版本提交
      • 2. 分支创建
      • 3. 分支切换
      • 4. 分支合并
        • (1) git merge
        • (2) git rebase
      • 5. 在git的提交树上移动
        • (1) HEAD
        • (2) 分离的HEAD
        • (3) 相对引用
        • (4) 强制修改分支位置
        • (5) 撤销变更
      • 6. 整理提交记录
      • 7. 交互式rebase
      • 8. 设定里程碑
      • 9. 添加标签
    • 绑定远程仓库
    • 克隆远程仓库
    • 同步远程仓库
    • 使用远程仓库覆盖本地仓库

安装git

Windows:Git安装
Linux(Ubuntu):

sudo apt install git

git学习网站

Git教程

git初始配置

git config --global user.name "Jasper Yang"

保存用户名和密码,就不用每次重复输入:

git config --global credential.helper store

查看git的配置信息:

git config --global --list

具体配置信息

  • 省略(Local):本地配置,只对本地仓库有效
  • –global:全局配置,对所有仓库有效
  • –system:系统配置,对所有用户生效

usr.name就是说配置的是用户名。
当需要配置邮箱则改一点就行:

git config --global user.email geekhall.cn@gmail.com

后面的就是邮箱地址。

新建版本库(仓库)

  • 创建仓库
    git init
    
    上面的方法是本地创建仓库,我们也能使用git clone来克隆一个本就存在的仓库。

git的工作区域和文件状态

工作区域

  1. 工作区(.git所在的目录):也就是电脑上的本地文件
  2. 暂存区(.it/index):用于保存即将提交到Git仓库的修改内容
  3. 本地仓库(.git/objects):通过git init创建的仓库

文件状态

  • 未跟踪(untrack)
  • 未修改(Unmodified)
  • 已修改(Modified)
  • 已暂存(Staged)
    在这里插入图片描述

上图中展示了各种指令的作用,因为这里也就不再赘述了。

git文件提交的基础指令
git status        # 查看仓库的状态
git add           # 添加到暂存区
git rm --cached   # 将已经添加到暂存区的文件取出
git commit (-m)  # 提交
                  # -m用于指定文件的备注信息等
                  # 这个信息会被提交
git log           # 查看提交的日志信息
git reset         # 用于回退版本

git基础指令

1. 版本提交

git commit

该命令用于在当前所处的分支上提交新版本。
但是git不会盲目得将所有的内容全部重新提交,它会与上一个版本进行比较,如果有更新,就会在其基础上进行更新。

2. 分支创建

git branch <name>

该命令用于创建一个分支,该分支的根节点是创建分支时所处的根节点。

3. 分支切换

git checkout <name>

先前我们已经使用了git branch对分支进行了创建,现在我们就可以使用git checkout进行分支切换了,因为git commit等操作是对当前分支进行操作。

4. 分支合并

(1) git merge
git merge

这里用图来理解下:
在这里插入图片描述
现在有两个分支,main和bugFix,现在我们根据“星号”的位置,可知现在我们处于main分支上。
此时我们使用git merge bugFix
在这里插入图片描述

(2) git rebase
git rebase

git rebase其实就是取出一系列的提交记录,“复制”它们,然后在另一个地方逐个放下去。

在这里插入图片描述
现在我们处于bugFix分支上,bugFix分支是基于C1的修改,main所处的C2分支也是基于C1的修改,现在使用git rebase main对分支进行合并:
在这里插入图片描述

需要注意的是:C3节点并没有消失
坦白点说:当你在bugFix分支上运行git rebase main命令时,实际上是将bugFix分支上的提交记录复制并重新应用到main分支上。这意味着Git会先找到bugFix分支与main分支的最近共同祖先,然后将bugFix分支自该祖先以来的提交记录依次复制并在main分支上重新应用。这样可以使得bugFix分支的提交历史与main分支保持在一条直线上,同时整合bugFix分支的改动到main分支上
所以我理解这个语句为:将根节点重新设定为main所指向的节点

5. 在git的提交树上移动

(1) HEAD

HEAD是当先所在分支的符号引用——也就是指向你正在其基础上进行工作的提交记录。
HEAD总是指向当前分支上的最后一次提交记录
HEAD在通常情况下是指向分支名的。

(2) 分离的HEAD

分离的HEAD指向了某个具体的提交记录而不是分支名
在教程中使用的checkout进行切换,切换的目标是对应节点的哈希值
节点的哈希值,我们能够使用git log进行查看:

git log
(3) 相对引用

git中,我们能通过相对引用,从一个易于记忆的节点或者HEAD进行计算:

  • ^:向上移动一个提交记录
  • ~<num>:向上移动num个提交记录,例如:~3

这里给出两个示例:

HEAD^^
main~3
(4) 强制修改分支位置
git branch -f main HEAD~3

上面的命令会将main分支强制指向HEAD的第3级parent提交。

(5) 撤销变更

Git中撤销变更的方式很多,主要的命令有两个:git resetgit revert,这两个是有区别的。
reset在本地好用,就是版本回退,但是如果是在分布式协作的时候就需要使用revert了,它不是直接回退,而是将更新一个版本,这个版本与需要回退的版本一样。

git reset
git revert

需要配合参数使用,表示需要回退多少个版本:

git reset HEAD~1

6. 整理提交记录

git cherry-pick

该指令用于将节点复制到目前分支上。
这跟之前的rebase有点类似。
cherry-pick适用于知道节点hash值的情况

7. 交互式rebase

交互式rebase其实就是rebase使用参数"-interactive",缩写为"-i",其余与之前rebase的一样。

git rebase -i main~4

它会将main~4的一系列指令进行一个复制操作,然后它会弹出一个UI对话框,其中可以选择拖拽更换节点位置,或者使用pick对节点进行一个“删除”,这样它不会对该节点进行复制。

8. 设定里程碑

里程碑固定指向某个节点,因此也叫做里程碑。

git tag version1 C1

这会将节点C1命名为version1,那么现在version1就表示C1。

9. 添加标签

这个标签就是对该节点的描述

git describe <ref>

其中ref可以是任意可以表示该节点的方法,不管是tag、hash值和HEAD都行。
使用后会有一个输出,格式如下:

<tag>_<numCommits>_g<hash>
  • tag:离ref最近的标签
  • numCommits:ref和tag相距多少个commit
  • hash:给定的ref的hash值,若是ref有标签,则输出标签

绑定远程仓库

我们可以使用clone指令和remote指令绑定远程仓库,例如在Github和Gitee创建的。

git clone <url>

git remote <url>

这两个指令相对来说比较复杂,建议看看官方的git教程。

克隆远程仓库

我们常常把代码托管在远程仓库,当我们想要拉取自己或者别人的远程仓库的时候,我们通常会使用clone指令

git clone <url>

这样就能将仓库中的所有文件全部完整的拉取下来,包括原本的分支情况和标签等等信息。
==这些信息都会存储在该文件夹的**.git**中。

同步远程仓库

当本地仓库的内容发生了修改,我们想要将修改后的内容推送到远程仓库中,这时候,我们就需要将我们已经修改好的内容进行一个推送(push),因为是将本地已经修改好的内容推送,理所应当的是这个被修改了的文件在本地应该处于commit状态,然后我们就能使用git push进行同步了。

git push [-option]

使用远程仓库覆盖本地仓库

首先此时我们先要确定本地仓库已经和远程仓库连接了:

git remote -x

使用这个指令可以看到远程仓库源。
然后将远程仓库的内容拉取到本地:

git fetch origin

但是,这样拉取到本地的内容不会自动合并,于是我们需要合并代码:

  1. 首先切换到想要进行覆盖的远程分支:
    git checkout <remote-branch-name>
    
    这样,工作区就被切换到需要进行覆盖的远程分支了。
  2. 对本地仓库进行重设:
    git reset --hard origin/<remote-branch-name>
    
  3. 然后将本地进行覆盖后的内容推送到远程仓库:
    git push origin <remote-branch-name> --force
    
    这段代码会会强制推送本地仓库内容到远程仓库,覆盖远程分支

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

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

相关文章

vue+springboot项目部署服务器

项目仓库&#xff1a;vuespringboot-demo: vuespringboot增删改查的demo (gitee.com) ①vue中修改配置 在public文件夹下新建config.json文件&#xff1a; {"serverUrl": "http://localhost:9090"//这里localhost在打包后记得修改为服务器公网ip } 然后…

三天学会阿里分布式事务框架Seata-seata事务日志mysql持久化配置

锋哥原创的分布式事务框架Seata视频教程&#xff1a; 实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;共计10条视频&…

Java中的Collection

Collection Collection 集合概述和使用 Collection集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素 JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现 创建Collection集合的对象 多态的方式 具体的实现类ArrayList C…

Pycharm的下载安装与汉化

一.下载安装包 1.接下来按照步骤来就行 2.然后就能在桌面上找到打开了 3.先建立一个文件夹 二.Pycharm的汉化

javaweb day9 day10

昨天序号标错了 vue的组件库Elent 快速入门 写法 常见组件 复制粘贴 打包部署

修改一个教材上的网站源码使它能在www服务器子目录上正常运行

修改一个教材上的网站源码&#xff0c;使它能在www服务器子目录上正常运行。 该网站源码是教材《PHPMySQL网站开发项目式教程》上带的网站源码。该源码是用 php html 写的。该源码包含对mysql数据库进行操作的php代码。以前该网站源码只能在www服务器的根目录上正常运行&…

一文认识蓝牙(验证基于Aduino IDE的ESP32)

1、简介 蓝牙技术是一种无线通信的方式&#xff0c;利用特定频率的波段&#xff08;2.4GHz-2.485GHz左右&#xff09;&#xff0c;进行电磁波传输&#xff0c;总共有83.5MHz的带宽资源。 1.1、背景 蓝牙&#xff08;Bluetooth&#xff09;一词取自于十世纪丹麦国王哈拉尔Haral…

[技巧]Arcgis之图斑四至点批量计算

前言 上一篇介绍了arcgis之图斑四至范围计算&#xff0c;这里介绍的图斑四至点的计算及获取&#xff0c;两者之间还是有差异的。 [技巧]Arcgis之图斑四至范围计算 这里说的四至点指的是图斑最东、最西、最南、最北的四个地理位置点坐标&#xff0c;如下图&#xff1a; 四至点…

SCP命令行向服务器端上传文件或下载文件

环境要求 使用scp&#xff08;Secure Copy Protocol&#xff09;命令在本地和远程系统之间安全地复制文件和目录&#xff0c;需要满足以下环境要求&#xff1a; SSH服务&#xff1a;scp依赖于SSH&#xff08;Secure Shell&#xff09;协议来安全地传输文件。因此&#xff0c;…

第四十八回 解珍解宝双越狱 孙立孙新大劫牢-Python模块和包概念与使用

吴用对宋江说&#xff0c;有个人&#xff0c;他是石勇的关系&#xff0c;与祝家庄的峦廷玉关系好&#xff0c;还是杨林、邓飞的老相识&#xff0c;他有一计.... 原来在宋江攻打祝家庄的时间段&#xff0c;山东海边登州也发生了一件事。登州山下有一家猎户&#xff0c;弟兄两个…

下载github项目到pycharm

一、下载git 1.下载git链接 https://git-scm.com/ 2.一路点击next&#xff0c;最后finish 二、使用git 1.安装成功后在开始菜单栏会找到如下内容&#xff0c;其中常用的是Git Bash 2.点击Git Bash 3.这里就可以克隆github上的代码了 点击复制&#xff0c;在命令行输入…

《猛兽派对》好玩吗值得买吗?苹果电脑也能装《猛兽派对》吗?猛兽派对好友通行证 动物派对 猛兽对战游戏

目录 一、《猛兽派对》好玩吗&#xff1f; 游戏玩法&#xff1a; 物理引擎&#xff1a; 关卡设计&#xff1a; 游戏特色&#xff1a; 评价&#xff1a; 荣誉&#xff1a; 二、苹果电脑也能装《猛兽派对》吗&#xff1f; 第1步&#xff1a;下载并安装CrossOver这款软件…

备战蓝桥杯---线段树基础2

今天我们把线段树的另一个模板看一下&#xff1a; 在这里&#xff0c;我们注意到乘的操作&#xff0c;因此我们用两个懒标记来分别表示加和乘&#xff0c;这时我们面临了一个问题&#xff0c;就是当我们把标记往下传时&#xff0c;它的儿子怎么知道是先乘还是先加&#xff1f; …

存储型xss案例

一、环境 DWVA网上自己找 二、开始闯关 先随便写看看 看看源码&#xff0c;数据是被插入到数据库里面了&#xff0c;魔术开关关闭了 数据最后插入显示到index.php 看一下我们目前的cookie值是 看了源码之后也没进行过滤那么我们试着直接插&#xff0c;看是否过滤 之后用户每…

详解如何保证消息队列不丢失消息(以kafka为例)

✨✨祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二. 持久化存储 2.1持久化存储原理&#xff1a; 2.2使用示例&#xff1a; …

递归法解决多重背包问题

多重背包问题同样是01背包问题的变种&#xff0c;同样可以通过修改01背包部分代码来求解。 方法一&#xff1a;修改递归函数&#xff0c;根据题目新的限制条件——使用次数扩充状态参数个数&#xff0c;将同一个物品选用的次数同样作为参数传递到栈空间中&#xff0c;同时也对…

赖迪思软件 lattice Diamond

问题1&#xff1a;工程编译好后&#xff0c;git上传&#xff0c;变更分支又切换回来&#xff0c;再次编译有时候失败&#xff0c;所以配置好的管脚变成默认的&#xff0c;生成的IP核变成名变粗&#xff08;顶部文件&#xff0c;管脚配置显示IP核输入输出信号配置&#xff09;。…

PHP设计模式初探 以前写的完整PPT!!!!!

幻灯片 1: 初探PHP设计模式 copyright CSDN 白毛大侠 幻灯片 2: 我们说别人代码写的烂&#xff0c;烂在哪&#xff1f; 反思我们平时是怎么写代码的&#xff1f; 非开发者如何转开发&#xff08;业务&#xff09; &#xff1f; 一.过程与对象 幻灯片 3: <?…

17.来自Sora的夺舍妄想——享元模式详解

OpenAI 的 Sora 模型面世之后&#xff0c;可以说人类抵御AI的最后阵地也沦陷了。 在此之前&#xff0c;人们面对AI交互式对话&#xff0c;AI制图&#xff0c;AI建模之类的奇迹时&#xff0c;还可以略微放肆的说&#xff1a;“的确很神奇&#xff0c;这毕竟还是比人类世界低了一…

抖音视频评论数据挖掘软件|视频批量下载工具

这款基于C#开发的抖音视频评论数据挖掘软件是一款功能强大、易于使用的工具。它不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载。主要功能模块如下&#xff1a; 批量视频提取 操作模块&#xff1a;用户可以输入要搜索的关键词&#…