Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

news2024/11/27 18:43:43

        借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 

Git基本认识

         Git把数据看作是对小型文件系统的一组快照,每次提交更新,或在Git中保存项目状态时,Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时,为了提高效率,如果文件没有被修改,Git不再重新存储文件,而是只保留一个链接指向之前存储的文件。Git对待文件的方式更像是一个快照流。

        Git项目中三个工作区域的概念:Git仓库(.git directory)、工作目录(Working Directory)及暂存区域(Staging Area)。

 Git工作的主要流程:

  • 在工作目录中修改文件。
  • 暂存文件,将文件的快照放入暂存区域。
  • 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

Git常见操作

Git设置用户名、密码

Git设置全局用户名、密码操作:

  1. git config --global user.name [username]
  2. git config --global user.email [email]

设置的时候,需要将上述内容中的[username]和[email]替换成自己的用户名和密码即可。

  设置好之后通过Git保存用户名、邮箱:

  1.  使用命令直接修改config文件即可保存。

    echo "[credential]" >> .git/config
    echo "    helper = store" >> .git/config

  2. 直接修改.git/config文件

    ubuntu@VM-7-212-ubuntu:~/kernel-code/kernel-netfilter-sample-code$ vim .git/config

    ##修改成如下

    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
    [remote "origin"]
        url = https://github.com/Miss-you/kernel-netfilter-sample-code.git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    ##主要是后面这两行,如果不想保存,则删除即可
    [credential]
        helper = store

    ##保存

        设置并保存后可以通过Git config --list查看已设配置,显示如下则操作成功。 

GIt提交代码

  • git branch : 查看当前的所有分支,并且确定当前位于哪个分支上。
  • git status:显示工作目录和当前暂存区状态。
  • git checkout 分支名:切换已经存在的分支。
  • git checkout -b 分支名:不存在的分支,创建并切换到新分支。
  • git add .:将当前目录的更改添加到暂存区。
  • git add -A:将工作目录中的所有更改添加到暂存区,无论这些更改是否被git跟踪。
  • git commit -m "test":将暂存区的更改创建一个新的提交(commit)保存到本地仓库。
  • git push origin 分支名(mastr/ test_01):将本地仓库中的分支推送到远程Git仓库中。
  • git push -u origin 分支名:-u的作用是设置上游(远程分支)跟踪当前的本地分支。第一次推送一个新分支时,使用-u选项可以指定远程分支作为本地分支的上游分支。
  • git push -f origin 分支名:强制将分支分支推送到远程。如果当前分支所在的版本号commit ID不是最新提交的版本号,会抛弃此版本之后的提交记录。
  • git pull origin master:拉取远程分支最新代码到本地。

Git合并分支

        企业开发中上线前都需要拉取最新master分支,并将其合并到对应的上线分支。

  1. 切换到master分支【git checkout master】
  2. 拉取远程分支的最新分支【git pull origin master】
  3. 切换到对应的上线分支,如:feat/print_0523【git chekout feat/print_0523】
  4. 将master分支合并到当前分支【git merge master】此命令会将当前master分支代码合并到当前所在分支。
  5. 解决合并分支冲突。
  6. 推送合并后的分支到远端。

Git进行版本回退

        恢复到一个旧版本、并且旧版本后的代码都抛弃:

        回退原理:git reset --hard 命令会将HEAD指针、当前分支指针和索引区都移动到指定的commit ID,从而重置工作区为该版本。

  1. 查看版本号:【git log】查找历史提交版本号。找到需要回滚的目标版本号。
  2. 使用【git reset --hard 版本号】将版本回退。此命令会将HEAD指针、当前分支指针和索引区都指向指定的commit ID,并重置工作区为该版本。
  3. 推送修改【git push -f 】,此时不能使用 git push 推送,因为我们本地库HEAD指向的版本比远程库的要旧。使用git push -f 强制推送上去。

Git抛弃本地分支拉取仓库对应分支的最新代码

        Git什么需要需要抛弃本地分支,拉取远程最新分支,当误操作将本地某个分支更改之后,并且更改的部分涉及面比较大。此时需要舍弃本地仓库中对应分支,直接拉取远程最新分支。

  • 使用 git branch 检查当前是否处于目标分支。
  • 如果处于目标分支,直接执行后续操作,如果没有处于目标分支,使用git checkout 分支名 切换到对应目标分支。
  • git status :检查本地是否有未提交的代码。
  • git stash:如果有未提交的代码,使用此命令将其暂存起来。git commit 也可以。
  • git fetch origin master:获取最新的远程master分支代码。
  • git reset --hard origin/master:重置本地分支到远程master分支的状态。
  • 如果前面的步骤中执行了git stash将本地未提交的分支暂存,此时需要使用git stash apply将更改应用到master分支。 

如何将本地已有代码推送至git仓库

        在电脑已经安装了git工具的前提下,按照下面步骤执行。

  1. 在github建立仓库,赋值仓库地址:GitHub - Wwt15537588047/learn_netty
  2. 在本地建立项目文件,并写入README.md文件:echo "Learn_netty" >> README.md
  3. 初始化本地仓库:git init
  4. 将当前分支代码添加暂存区中:git add .
  5. 将暂存区中的内容新建一个commit 保存到本地仓库:git commit -m "feat : first code"
  6. 通过IDEA添加远程仓库地址: git remote add origin  “步骤一仓库地址”
  7. 推送代码到远程仓库:git push -u origin master

.gitignore文件的使用

        .gitignore用于忽略某些文件,从而使得其不被提交到远程仓库:

        如果在提交代码的时候使用了git add -A此时被.gitignore跟踪的代码会失效。想要.gitignore生效,一般需要配合git add . 命令使用。

        如果已经使用了git add -A此时如何处理:

git rm -r --cached .  #清除缓存
git add . #重新trace file
git commit -m "update .gitignore" #提交和注释
git push origin master #可选,如果需要同步到remote上的话

参考资料 

如何将本地代码推送至github_github推送代码-CSDN博客

git更新.gitignore并使其生效_gitignore修改后怎么生效-CSDN博客 

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

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

相关文章

持续打通中国CRM SaaS生态,阿里云上的Salesforce稳步“着陆”

自2023年底阿里云上的Salesforce正式上线(GA),全球第一大CRM SaaS厂商Salesforce能否顺利“着陆”中国市场,就备受关注。Salesforce自2004年在中国开展业务,到2019年宣布与阿里云达成战略合作、阿里云成为Salesforce在…

数据结构--哈希表

文章目录 哈希表查找本节提要哈希存储、查找的概念哈希函数的特点哈希函数的应用哈希函数示例哈希函数问题哈希表设计方法直接定址法除留余数法数字分析法处理冲突的方法哈希表的查找练习总结 哈希表查找 本节提要 哈希查找的概念。哈希函数的构造方法。处理冲突的方法。哈希…

普元MDM主数据管理系统与蓝凌OA系统集成案例

一、项目背景 某工程机械集团是中国工程机械产业奠基者、开创者和引领者,是工程机械行业具有全球竞争力、影响力的千亿级龙头企业。公司主要指标始终稳居中国工程机械行业第1位。 蓝凌OA在集团中处于一个重要角色,集团内各流程业务数据都需要通过OA进…

STM32通信协议 总集篇 (速记版)

名称引脚常用在双工时钟电平设备USARTTX、RX单片机和pc,单片机和单片机全双工异步单端点对点I2CSCL、SDA单片机和单片机半双工同步单端多设备SPISCLK、MOSI、MISO、CS单片机和单片机全双工同步单端多设备CANCAN_H、CAN_L智能汽车半双工异步差分多设备USBDP、DM半双工异步差分点…

目前软件测试薪资怎么样,工作好找吗?

软件测试的薪资和就业情况在不同国家和地区会有所不同。同时,行业的变化和经济状况也会影响薪资水平和就业机会。以下是一些一般性的信息: 国外软件测试薪资: 在发达国家,软件测试工程师的薪资水平通常相对较高,因为技…

EChart-坐标轴数值处理

写图表时,Y轴的数值过大,不太可能直接展示,这时候就得简写了,如图: 红框圈起来的数值表示如下: 1K10001M1000,0001B 1000,000,000 1KB1000,000,000,000 export function toBMK(value) {const vblValue Ma…

为什么IDEA中使用@Autowired会被警告

我们在使用IDEA编码时,如果用到了Autowired注解注入bean,会发现IDEA会给代码标个波连线,鼠标移动上去,会发下idea提示:不推荐使用Filed injection,这是Spring的核心DI(Dendency Injection&#…

python easygui库常用方法介绍

msgbox() 弹出对话框 这是最基本的弹出对话框,用于显示简单的消息或提示。例如: import easygui easygui.msgbox("欢迎使用EasyGUI!") buttonbox() 带有多个按钮的对话框 它会显示一个带有多个按钮的对话框,用户点击后返回所选…

三养食品:火鸡面太辣?远不及小米辣的三分之一!

不久前,三养火鸡面在丹麦被召回的消息引起了全球媒体的关注。面对这一情况,三养食品迅速回应,指出丹麦方面在辣椒素的测算方法上存在错误,并提出了异议。大约一个月后,丹麦兽医和食品管理局(以下简称DVFA&a…

ArcGIS小技巧:图斑变化分析

在做规划的过程中,经常会有这么个需求,用地方案确定后,需求找出规划用地和三调现状用地之间具体有哪些变化。 一方面可以用作具体规划内容的分析,另一方面也可以避免因为误操作而导致的错误图斑的出现。 以下图为例,…

FPGA实现LCD1602控制

目录 注意! 本工程采用野火征途PRO开发板,外接LCD1602部件进行测试。 有偿提供代码!!!可以定制功能!!!有需要私信!!! 一、基础知识 1.1 引脚…

Ubuntu22.04重装系统+基础配置

重装系统 note:备份数据,重装系统后home下的文件会丢失,所以先备份一下home的数据到其他的盘/mnt/下里。记住之前系统的DNS,IP和掩码。 先在Ubuntu官网下载22.04桌面版(种子链接要用迅雷下载)。但是版本还…

JavaScrip中删除的应用

实现功能&#xff1a; 点击删除超链接删掉 var lisdocument.getElementsByTagName("li");for (let i 0; i < lis.length; i) {lis[i].onclickfunction () {if (confirm("确定删除" this.firstChild.nodeValue "信息吗")) {this.parentNod…

聊聊,IEEE论文的含金量!这四本超赞的IEEE系列期刊,发文量超2000,谁投谁中!

关注GZH【欧亚科睿学术】&#xff0c;第一时间了解期刊最新动态&#xff01; 在学术界&#xff0c;IEEE (电气电子工程师协会) 论文被公认为高质量的研究成果。IEEE作为全球最大的专业技术组织之一&#xff0c;在电气、电子、计算机工程和科学领域具有广泛的影响力。其出版的论…

HarmonyOs~UIAbility组件的启动模式及交互

单实例模式 首先在该模块的module.json5配置 "abilities": [{..."launchType": "singleton",...}], 然后我们看一下UIAbility单实例的执行过程 tips&#xff1a;首次启动为冷启动 如果是冷启动 系统就新建该UIAbility组件的实力 若不是冷启…

【MQTT(5)】php 做一个mqtt按钮,发布触发信号

在之前博客php 做一个文件下载服务器&#xff0c;得避免跨路径工具&#xff0c;安全很重要 中加了一个按钮&#xff0c;触发物联网设备返回数据。基于mqtt开发&#xff0c;如果想知道mqtt如何搭建&#xff0c;可以看我的博客【MQTT&#xff08;1&#xff09;】服务端的搭建 效…

day13:函数基本使用

1、什么是函数 函数就相当于具备某一功能的工具 函数的使用必须遵循一个原则&#xff1a;先定义后调用2、为何要用函数 1、组织结构不清晰&#xff0c;可读性差 2、代码冗余 3、可维护性、扩展性差3、如何用函数 先定义三种定义方式后调用三种调用方式返回值三种返回值的形式…

醒醒,别睡了...讲《数据分析pandas库》了—/—<6>

一、 1、长宽格式转换 基于多重索引&#xff0c;Pandas 可以很容易地完成长型、宽型数据格式的相互转换。 1.1 转换为最简格式 stack&#xff08;&#xff09;其使用法如下&#xff1a; stack函数用于将DataFrame中的列转换为行&#xff0c;即将宽格式数据转换为长格式数据。…

【python】PyQt5中QToolButton的详细用法教学与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…