git的安装、使用

文章目录

    • 安装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.mzph.cn/news/715839.shtml

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

相关文章

Ps:锐化工具

锐化工具 Sharpen Tool可用于增强图像局部区域的对比度&#xff0c;从而提高图像的清晰度和细节&#xff0c;特别适用于提升照片的边缘定义和纹理细节。 快捷键&#xff1a;无 ◆ ◆ ◆ 常用操作方法与技巧 1、如果直接在像素图像上使用锐化工具&#xff0c;可尝试使用“渐隐…

怎么优雅地访问ChatGPT

ChatGPT&#xff0c;这颗璀璨的智能结晶&#xff0c;在2022年岁末之际&#xff0c;由OpenAI实验室倾力铸就&#xff0c;犹如夜空中跃动的智慧星辰&#xff0c;点亮了人工智能领域的新纪元。犹如汪洋中的一座灯塔&#xff0c;ChatGPT以其独特的智慧光辉引人注目&#xff0c;然而…

Linux:kubernetes(k8s)node节点加入master主节点(3)

Linux&#xff1a;kubernetes&#xff08;k8s&#xff09;搭建mater节点&#xff08;kubeadm&#xff0c;kubectl&#xff0c;kubelet&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136415575?spm1001.2014.3001.5502 我在上一章部署好了主节点&…

前端打包部署(黑马学习笔记)

我们的前端工程开发好了&#xff0c;但是我们需要发布&#xff0c;那么如何发布呢&#xff1f;主要分为2步&#xff1a; 1.前端工程打包 2.通过nginx服务器发布前端工程 前端工程打包 接下来我们先来对前端工程进行打包 我们直接通过VS Code的NPM脚本中提供的build按钮来完…

从下一代车规MCU厘清存储器的发展(2)

目录 1.概述 2.MCU大厂的选择 2.1 瑞萨自研STT-MRAM 2.2 ST专注PCM 2.3 英飞凌和台积电联手RRAM 2.4 NXP如何计划eNVM 3.小结 1.概述 上篇文章&#xff0c;我们简述了当前主流的存储器技术&#xff0c;现在我们来讲讲各大MCU大厂的技术选择 2.MCU大厂的选择 瑞萨日…

Tomcat布署及优化二-----Mysql和虚拟机

1.Mysql搭Blog 1.1下载安装包 看一下tomcat状态 1.2放到指定目录 cp jpress-v3.2.1.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/webapps/ 1.3路径优化 ln -s jpress-v3.2.1 jpress 看jpress权限 1.4生成配置文件 cat >/etc/yum.repos.d/mysql.repo <<E…

您的计算机已被pings勒索病毒感染?恢复您的数据的方法在这里!

导言&#xff1a; 在数字时代&#xff0c;数据是企业和个人生活中不可或缺的一部分。然而&#xff0c;随着勒索病毒的不断进化和传播&#xff0c;我们的数据面临着前所未有的威胁。其中&#xff0c;.pings 勒索病毒是最新一轮威胁之一&#xff0c;它以其独特的加密算法和无情的…

【Redis | 第一篇】快速了解Redis

文章目录 1.快速了解Redis1.1简介1.2与其他key-value存储的不同处1.3Redis安装——Windows环境1.3.1下载redis1.3.2启动redis1.3.3进入redis客户端1.3.4修改配置 1.4Redis安装——Linux环境1.4.1安装命令1.4.2启动redis1.4.3进入redis客户端 1.5配置修改1.6小结 1.快速了解Redi…

MyBatis 学习(七)之 缓存

目录 1 MyBatis 缓存介绍 2 一级缓存 3 二级缓存 3.1 二级缓存介绍 3.2 二级缓存配置 3.3 二级缓存测试 4 参考文档 1 MyBatis 缓存介绍 MyBatis 缓存是 MyBatis 中的一个重要特性&#xff0c;用于提高数据库查询的性能。MyBatis 提供了一级缓存和二级缓存两种类型的缓存…

Git与GitHub:解锁版本控制的魔法盒子

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

cetos7 Docker 安装 gitlab

一、gitlab 简单介绍和安装要求 官方文档&#xff1a;https://docs.gitlab.cn/jh/install/docker.html 1.1、gitlab 介绍 gitLab 是一个用于代码仓库管理系统的开源项目&#xff0c;使用git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务平台&#xff0c;通过该平…

(六)Dropout抑制过拟合与超参数的选择--九五小庞

过拟合 即模型在训练集上表现的很好&#xff0c;但是在测试集上效果却很差。也就是说&#xff0c;在已知的数据集合中非常好&#xff0c;再添加一些新数据进来效果就会差很多 欠拟合 即模型在训练集上表现的效果差&#xff0c;没有充分利用数据&#xff0c;预测准确率很低&a…

笨办法学 Python3 第五版(预览)(一)

原文&#xff1a;Learn Python the Hard Way, 5th Edition (Early Release) 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 模块 1&#xff1a;Python 入门 练习 0&#xff1a;准备工作 这个练习没有代码。这只是你完成的练习&#xff0c;让你的计算机运行 Python。…

Unity 游戏设计模式:单例模式

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com 单例模式 在 C# 游戏设计中&#xff0c;单例模式是一种常见的设计模式&#xff0c;它的主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。单例模式在游戏开发中具有以下几个作用&#xf…

Matlab 机器人工具箱 Link类

文章目录 1 Link类1.1 机械臂Link类1.2 构造函数1.3 信息/显示方法1.4 转换方法1.5 操作方法1.6 测试方法1.7 重载操作1.8 属性(读/写)1.9 例子2 Link.Link2.1 创建机器人连杆对象2.2 OPTIONS2.3 注意2.4 旧语法2.5 例子3 Link的其他函数3.1 Link.A3.2 Link.char3.3 Link.displ…

unity学习(44)——选择角色菜单——顺利收到服务器的数据

本节的思路参考自&#xff0c;内容并不相同&#xff1a;13ARPG网络游戏编程实践&#xff08;十三&#xff09;&#xff1a;角色选择UI及创建面板制作&#xff08;四&#xff09;_哔哩哔哩_bilibili 现在的代码写在MessageManager.cs中&#xff0c;函数名UserHandler(是从OnMess…

Revit-二开之创建墙-(6)

Revit API窗间墙 protected override Result OnExecute(ExternalCommandData commandData, ref string message, ElementSet elements) {try{// 获取当前活动的文档

你是否知道Python的列表翻转、排序和多维列表

1.reverse() 表示翻转列表中的元素&#xff0c;不会生成新列表 list1 [2343, 55, 4, 345, 676, 768] list1.reverse() print(list1) # [768, 676, 345, 4, 55, 2343] 2.sort() 对原列表元素进行排序&#xff0c;默认是升序 list1 [2343, 55, 4, 345, 676, 768] list1…

腾讯云幻兽帕鲁服务器在Linux和Windows操作系统上的安全性对比如何?哪个更加安全?

腾讯云幻兽帕鲁服务器在Linux和Windows操作系统上的安全性对比如何&#xff1f; Linux因其资源利用率高、稳定性和安全性较强而受到许多专业用户的青睐。这表明在Linux操作系统上&#xff0c;腾讯云可能会更倾向于提供高安全性的服务环境。然而&#xff0c;并没有直接比较Linu…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的夜视行人检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发高效的夜视行人检测系统对于提升夜间安全和监控效能至关重要。本篇博客详尽介绍了如何利用深度学习技术搭建一个夜视行人检测系统&#xff0c;并提供了完整的实现代码。本系统采用了先进的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能比较…