【版本控制】Git快速上手

news2024/9/20 23:29:46

Do you know what Git is?

一.引入

(1) 作用

  Git 是一个分布式版本控制系统,主要是用于管理开发过程中的源代码文件(Java类,xml文件,html页面等)。可用于代码回溯,版本切换,多人协作开发,远程备份等场景。时光不能倒流,但代码有记录并能回溯,且有平行宇宙。

(2) 整体工作流程

  文件通过Git仓库来储存和管理,Git仓库分为两种:

  • 本地仓库:开发人员自己电脑上的Git仓库
  • 远程仓库:远程服务器上的Git仓库

整体工作流程如下:

各个命令作用如下:

(3) 代码托管服务

  我们可以直接借助互联网上的一些代码托管服务来搭建远程仓库,例如gitee,github等,由于gitee服务器在国内,访问速度较快,此处建议使用gitee作为远程仓库。

二.初始化

(1) 全局设置

  当安装Git后首先要做的事情是设置用户名称和email地址,因为每次Git提交都会使用该用户的信息。
在Git命令行中执行下面命令:

  • 设置用户信息
 git config --global user.name "guanzhi"
 git config --global user.email "guanzhi"
  • 查看配置信息
git config --list

(2) 获取Git仓库

  要使用Git对我们的代码进行版本控制,首先需要获得Git仓库。获取Git仓库通常有两种方式:

  1. 在本地初始化一个Git仓库(
  2. 从远程仓库克隆

(2.1) 本地创建

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

  1. 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
  2. 进入这个目录中,点击右键打开Git bash窗口
  3. 在窗口执行命令git init
  4. 如果创建成功后可在文件夹下看到隐藏的.git目录。

(2.2) 远程克隆

git clone 远程仓库url

(3) 相关概念

  • 版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息,日志信息和文件版本信息等
  • 工作区: 包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
  • 暂存区: .git文件夹中有很多文件,其中一个index文件就是缓存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方。

Git工作区中的文件存在两种状态

  1. untracked 未跟踪 (未被纳入版本控制)
  2. trackend 已跟踪(被纳入版本控制)
    • Unmodified 未修改状态
    • Modified 已修改状态
    • Staged 已暂存状态

注意:这些文件的状态会随着我们执行Git的命令发生变化。

三.常用命令

(1) 本地仓库操作

(1.1) 查看修改的状态

作用:查看的修改的状态(暂存区、工作区)
命令形式:

git status

(1.2) 添加工作区到暂存区

作用:添加工作区一个或多个文件的修改到暂存区
命令形式:

git add 单个文件名
  • 将所有修改加入暂存区:
git add .
或
git add *

(1.3) 提交暂存区到本地仓库

作用:提交暂存区内容到本地仓库的当前分支
命令形式:

git commit -m '注释内容'

(1.4) 查看提交日志

作用:查看提交记录
命令形式:

git log

(1.5) 版本回退

作用:版本切换,当前所有的代码都会回滚到切换到的版本所处状态
命令形式:

git reset --hard commitID

commitID可以使用git log指令查看

git reflog 这个指令可以看到已经删除的提交记录

(2) 远程仓库操作

(2.1) 添加远程仓库

  此操作需先初始化本地库,然后与已创建的远程库进行对接。
命令:

git remote add 远端名称 仓库路径  

远端名称:默认是origin,取决于远端服务器设置
仓库路径:从远端服务器获取此URL

(2.2) 查看远程仓库

命令:

git remote 
或
git remote -v

(1.3) 克隆远程仓库到本地

  如果你想获得一份已经存在了的Git远程仓库的拷贝,git可以克隆该Git仓库服务器上的几乎所有数据(包括日志信息,历史记录等)。
克隆仓库的命令格式是:

git clone 仓库路径

(1.4) 推送至远程仓库

需要先将文件commit给本地仓库管理,然后推送远程
命令:

git push 远端名称 远端分支名称

  首次push到远程仓库可能需要进行身份验证,这是只需要输入注册托管平台的账号密码即可。

(1.5) 从远程仓库拉去

  git pull命令的作用是从远程仓库获取最新版本并合并到本地仓库。
命令格式:

git pull 远端名称 远端分支名称

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存有文件,此时再从远程仓库拉去文件的时候会报错。(fatal:refusing to merge unrelated histories)
解决只需在命令后加入参数即可:

git pull 远端名称 远端分支名称 --allow-unrelate-histories 

(3) 分支操作

(3.1) 作用

  使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
  我对此的理解是:主号开了个分身去练级,如果提高了可以融合回本体,如果bug了可以舍弃,完全不影响本体。
  通过git init命令创建本地仓库时默认会创建一个master分支。

(3.2) 查看分支

  • 列出所有本地分支
git branch
  • 列出所有远程分支
git branch -r

注:如果本地仓库是通过git init获得而不是克隆则无法查看到远程分支名称。输入如下指令后再查看即可:

git remote update origin --prune   
# 更新远程主机origin 整理分支
  • 列出所有本地分支和远程分支
git branch -a

(3.3) 创建分支

命令:

git branch 分支名称

(3.4) 切换分支

命令:

git checkout 分支名称

(3.5) 推送至远程仓库分支

命令:

git push 远端名称 分支名称

(3.6) 分支合并

命令:

git merge 被融合分支名称
# 首先checkout到一个分支。
# 然后选择将哪个分支融合于此。
  • 解决冲突:
    当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
    1.手动处理文件中冲突的地方,改成我们想要的样子
    2.将解决完冲突的文件加入暂存区(add)
    3.提交到仓库(commit)
    冲突部分的内容处理如下所示:

(3.7) 删除分支

  • 删除分支时,可能需要做各种检查
git branch -d 分支名称
  • 不做任何检查,强制删除
git branch -D 分支名称

(4) 标签操作

(4.1) 作用

  Git中的标签,指的是某个分支某个特定时间点的状态。通过标签很方便的切换到标记时的状态(类似拍的一张照片,已经定格)。比较有代表的是人们会使用这个功能来标记发布结点(v1.0,v1.2等)。

(4.2) 查看已有标签

命令:

git tag

(4.3) 创建标签

命令:

git tag 标签名称

(4.4) 将标签推送至远程仓库

命令:

git push 远端名称 标签名称

(4.5) 检出标签

作用:将标签当时状态下载下来,获取当时状态下的代码。
命令:

git checkout -b 创建新分支名称 当时状态标签名称

四.在IDEA中操作Git

(1) 在IDEA中配置Git

(2) 获取Git仓库

在IDEA中使用Git获取仓库有两种方式:

  1. 本地初始化仓库

  2. 从远程仓库克隆

    或者在初始界面:

(3) gitignore文件的作用

  告诉git项目中的哪些文件不需要git管理,例如.idea .iml target等等。

(4) 本地仓库操作

(4.1) 将文件加入暂存区

(4.2) 将暂存区的文件提交到到版本库


常用:

(4.3) 查看日志


(5) 远程仓库操作

(5.1) 查看远程仓库&添加远程仓库

(5.2) 推送至远程仓库


常用:

(5.3) 从远程仓库拉取


常用:

(6) 分支操作

(6.1) 查看分支


常用:(在屏幕右下角)

(6.2) 创建分支

(6.3) 切换分支

(6.4) 将分支推送至远程仓库

(6.5) 合并分支

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

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

相关文章

AcWing 292. 炮兵阵地(状态压缩DP)

AcWing 292. 炮兵阵地(状态压缩DP)一、题目二、思路1、分析2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、题目 二、思路 1、分析 这道题的话和我们之前讲解的AcWing 327. 玉米田(状态压缩DP)和AcWing 1064. 小国王…

Jenkins环境搭建与实战

Jenkins环境搭建与实战1、Jenkins2、GItLab的安装2.1、安装依赖2.1.1、CentOS8安装报错2.1.2、找不到对应包安装报错2.2、配置镜像2.3、安装gitlab3、安装Jenkins4、Maven安装4.1、出现报错 The JAVA_HOME environment variable is not defined correctly的错误5、Jenkins 通过…

SWIFT Framework .NET 2023

SWIFT Framework .NET 2023 Latest 2023 specification messages.Improves parsing..NET Framework 4.8 release.Performance updates.Improves handling of special characters. SWIFT Framework.NET是一个用于在组织信息系统基础架构中捕获、验证和处理SWIFT消息的系统。SWI…

3.5主存储器与CPU的连接

文章目录一、引子二、单块存储芯片与CPU的连接三、多块存储芯片与CPU的连接1.现代计算机2.命名3.增加主存的存储字长--位扩展(1)单块(2)多块4.增加主存的存储字数--字扩展(1)单块(2)…

19行列式公式和代数余子式

行列式公式 学习了关于行列式的这么多性质,现在我们有能力推导二阶行列式公式了: 观察上面的推导过程,不难发现,行列式的值等于使用性质3.b 分解后所得的那些非零行列式的和,所谓的非零行列式也即该行列式各行各列都…

【算法基础】大整数加减乘除法(高精度)

大整数的思想:用数组存储大整数(超长整数),比如存储1000位的整数只需要开辟一个长度为1000的数组(C++通常使用vector),今天将通过OJ例题来介绍高精度问题。(完全0基础的先建议自主学习一下,本博客默认已了解大致思想) 一、 大整数加法(大整数 + 大整数) (一)Qu…

6 逻辑斯蒂回归

文章目录回归问题和分类问题问题提出逻辑回归二分类问题逻辑函数与线性回归方程的不同模型变化loss函数不同BCEloss函数的介绍课程代码课程来源: 链接课程文本来源借鉴: 链接以及(强烈推荐) Birandaの回归问题和分类问题 有监督学…

Docker安装Tomcat服务器

Docker安装Tomcat服务器查看tomcat镜像下载 tomcat镜像启动tomcat容器浏览器访问容器中的tomcat1 查看ip2 查看容器是否启动3 进入容器重启容器浏览器访问查看tomcat镜像 docker search tomcat下载 tomcat镜像 咱直接下载最近版本的tomcat镜像 docker pull tomcat查看一下本…

芯片验证系列——激励(stimulus)

对于芯片验证,主要的挑战在于:1.如何打出所有可能的激励灌给DUT;2.如何在各种可能得激励情况下,判断出不符合硬件描述的行为。本文单单聚焦于一些关于构造stimulus方面的想法吧,结合了红皮书, writing testbench和项目…

储殷黄日涵教授《丁香花》唐磊推荐杨语莲,意味拜师赵本山有望吗

熟悉娱乐圈的人都知道,这个圈子包含有很多潜规则,尤其是一些女艺人,想要有所成就,不是有才华就可以的。就拿音乐人杨语莲来说,她是一个非常有才华的歌手,然而就因为不接受潜规则,至今仍是歌红人…

设计模式:单例模式

1、单例模式 单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。 为什么需要单例模式 单例模式是为了保证程序的线程安全。 线程安全: 在拥有共享数据的多条线程并行执行的程序中,线程安全的代…

cuda和pytarch的安装-参考官网的安装-较为通用

文章目录cuda 安装PyTorch 1.x版本安装cuda 安装 官网:cuda各个版本安装教程 选择相应版本点击版本前方链接就可以进入安装教程页面 例如:我想要为ubuntu系统安装一个11.7版本的cuda,则选择11.7版本的连接,然后进入安装教程页面…

深度学习之优化算法

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、优化算法与深度学习 1、优化算法对于深度学习的意义 2、优化算法与深度学习的关系 3、优化算法在深度学习中的主要挑…

如何用Spring整合MyBatis和Junit

Spring整合MyBatis和Junit一. 整合MyBatis1. 目录:2. pom.xml:3. domain层:4. dao层:5. service层:AccountService接口类:AccountServiceImpl实现类:6. jdbc.properties配置文件:7. …

HBase基于HDFS上是如何完成增删改查功能的

HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能? 1.如何理解? 1.这句话有个更专业的说法:HDFS 采用数据流方式来访问文件,只支持单个客户端向一个文件追加数据. 2 上半句话,访问文件不外乎读和写&#xff0…

SecureCRT for mac的坑

最新macOS升级到13(原来是11,一直没升),升级之后输入法和SecureCRT挂了。 记录一下SecureCRT,备忘 1、第一个坑居然是下载 网上找破解版,想找个新一点的版本,发现都是收费的 收费也就罢了&…

三、优惠卷秒杀

文章目录优惠卷秒杀1.redis实现分布式ID2.优惠券秒杀下单3.超卖问题4.lua脚本5.分布式锁6.redis stream消息队列实现异步秒杀7.redis消息队列list实现消息队列PubSub实现消息队列stream实现消息队列stream的消息队列-消费者组学习黑马点评项目整理总结:https://www.bilibili.co…

腾达Tenda路由器中继wifi步骤

前提: 你有一个信号比较弱,但能上网的wifi(暂时叫它1号wifi),并知道其密码你有一个有中继功能的路由器,比如Tenda某型号路由器,插上电,这个路由器的wifi暂时叫它2号wifi 长按下拉菜…

数据库面试题总结

文章目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)主键和索引的区别?(5)说一说索引的底层实现&#x…

educoder数据结构 排序 第2关:实现快速排序

本文已收录于专栏 🌲《educoder数据结构与算法》🌲 任务描述 本关要求通过补全快速排序私有函数QSort__来供函数QuickSort调用,以此来实现快速排序的功能。 相关知识 快速排序的基本过程是:从待排序记录中任选一个记录&#…