Git基础教程

news2024/12/23 22:12:57

一、Git简介

1、什么是Git?

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。
Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。

2、Git的特点

Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时,都十分高效,而且非常的高大上。
集中式与分布式的区别
除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式

3、集中式就是svn和csv这样的版本控制系统,分布式是git

区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。

分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。

像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。

4、Git下载安装

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。
本篇我们只介绍在Windows下安装Git,Git 各平台安装包下载地址为:http://git-scm.com/downloads

下载好,按默认安装即可(推荐安转在D盘中)。安装完成后,在开始菜单里找到“Git”->“Git Bash”,双击蹦出一个类似命令行窗口的东西,
在这里插入图片描述
输入git --version显示版本(也可以在cmdDOS窗口中测试),就说明Git安装成功!

5、Git配置

完成后在命令行输入:

  1. 配置git环境

config:参数是用来配置git环境的
–global:长命令表示配置整个git环境

初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码

用户名配置

// user代表用户,.name代表配置用户的名称

git config --global user.name "你的用户名"

邮箱配置

user代表用户,.email代表配置用户的邮箱

git config --global user.email "你的邮箱"

查看配置信息:
要检查已有的配置信息,可以使用 git config --list 命令:

$ git config --list

也可以单独查看某项配置:

$ git config user.name
$ git config user.email

6、Git 工作区、暂存区和版本库

  • Workspace工作区: 就是你电脑里能看到目录;
  • Index / Stage暂存区: 一般放在.git(可隐藏文件)目录下的index文件(.git/index)中,所以我们把暂存区有时候也叫做索引(index);
  • 版本库: 工作区有一个隐藏目录,.git,这个实际上是Git的本地版本仓库。
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

7、gitee开发文档

https://help.gitee.com/repository/ssh-key/generate-and-add-ssh-public-key

二、Git基本命令操作

1、Git基本命令操作

$ mkdir learngit    #创建
$ cd learngit       #切换
$ pwd               #显示当前盘符路径    /d/gitspace/learngit

git init	版本库初始化
git add	添加至暂存区
git commit	提交
git status	显示本地仓库状态
git checkout 撤回
git reflog	查看历史记录
git reset --hard 版本穿梭
git push	推送至远程版本库
git clone	克隆版本库
git pull	拉回远程版本库的提交
git merge	分支合并
git rebase	分支变基
git log	显示提交日志
git rm	撤回添加

2、创建本地空仓库:git init

首先我们选择一个合适的位置,创建一个空目录

然后通过git init命令把这个目录变成Git可以管理的仓库:

git init

这个目录是Git用来跟踪管理版本仓库的,千万不要乱修改和删除这个目录中任意文件,否则这个git仓库就被你破坏了。

如果你看不到这个.git文件,使用命令ls -ah就可以看到隐藏的文件了。

3、把文件添加到版本库

  1. 把文件添加到版本库
    版本控制系统可以记录你每次的改动

  2. 创建一个文件readme.txt

  3. 将文件提交到本地git版本仓库中
    查看当前状态:

$ git status      #查看当前git状态(新建了一个文件)

在这里插入图片描述

  • 第一步添加到暂存区:
$ git add readme.txt      #添加到暂存区

再查看状态:
在这里插入图片描述

  • 从暂存区删除
git rm  --cached readme.txt
  • 第二步提交到本地版本仓库
$ git commit -m "wrote a readme file"  readme.txt

在这里插入图片描述

git commit -m "记录提交内容"命令,-m 后面写的是本次提交的记录内容,也可以不写。

然后再再次查看状态(没有可提交的文件)

4、版本回退

查看历史记录,使用git log命令

  1. 回滚到指定历史版本
git reset --hard 要回滚id
  1. 回滚当前仓库指向的版本
    HEAD是指向当前仓库的,历史版本中可能有别的分支,我们只想迭代我们仓库的上一个版本,这个很简单,我们只需要用HEAD来指向就可以了
git reset --hard HEAD^
  1. 查看版本信息
    git reflog命令查看每个版本的commit id,直接git reset --hard commit_id即可。

5、Git的管理与修改

  • 对readme.txt文件做修改,添加两行新内容:
  • 然后将readme.txt添加到暂存区git add $ git add readme.txt
  • 这个时候我们先不提交readme.txt,而是再做一次修改,将最后一行内容稍作修改
  • 这个时候我们不再添加到暂存区了,而是直接git commit提交到本地版本仓库 $ git commit -m “git tracks changes”
  • 会发现上述我们明明提交了,然后文件仍然是处于修改的状态,原因就是因为我们第二次做的修改没有添加到暂存区中,git commit命令没有追踪到待提交的第二次修改内容


    查询修改的区别
  • 这个时候我们使用一个新命令git diff HEAD – readme.txt(注意中间的空格),来对比我们此时工作区和git本地版本仓库中的readme.txt文件的区别:
    接着git add,然后git commit在,这样就提交了;

6、版本穿梭

回到之前的版本 git reset --hard id

在这里插入图片描述

7、分支操作

分支操作

  • 创建分支:git branch 分支名
  • 查看分支 git branch -v
  • 切换分支git checkout 分支名
  • 合并分支 git merge 分支名
  • 删除分支 git branch -d 分支名
  1. 查看分支
git branch -v
* master  cdc4028 first commit
  1. 创建分支
git branch testing

git branch -v
* master  cdc4028 first commit
 testing cdc4028 first commit
  1. 切换分支
git checkout testing
Switched to branch 'testing'
M       a.txt

git branch -v
 master  cdc4028 first commit
* testing cdc4028 first commit
  1. 合并分支
git merge com master  # com是新建分支   master主分支

Updating 6ac5213..a8c3466
Fast-forward
 hello.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

  1. 删除分支
$ git branch -D testing
Deleted branch testing (was cdc4028)

$ git branch -v
* master cdc4028 first commit

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

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

相关文章

你是否能应对每天数十亿次的IP访问?Top100查找技术解析

亲爱的小伙伴们,大家好!我是小米,一个热爱技术,热衷分享的IT小伙伴。今天,我要和大家聊一个程序员面试常见的问题:如何在每天海量IP访问的情况下,使用Java找出访问频率最高的Top 100&#xff1f…

【LeetCode刷题-数组】--344.反转字符串

344.反转字符串 使用双指针&#xff1a; class Solution {public void reverseString(char[] s) {int l 0,r s.length-1;while(l<r){char c s[l];s[l] s[r];s[r] c; l;r--;}} }

鸿蒙HarmonyOS应用开发:多码识别

华为HMS Core的扫码接口更适用于简单的个人使用。在商业环境&#xff0c;如货架、医用试管、图书馆书架等&#xff0c;常常遇到复杂的多码扫描需求&#xff0c;这时需要专业的扫码SDK。尽管当前市场上的主流商业SDK尚未支持鸿蒙HarmonyOS&#xff0c;但我们仍可以通过HTTP请求来…

「干货分享」如何使用CLion轻松解决C++开发者的7大痛点

CLion是一款专为开发C及C所设计的跨平台IDE&#xff0c;它是以IntelliJ为基础设计的&#xff0c;包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C&#xff0c;同时它还使用智能编辑器来提高代码质量、自动代码重构并且…

【UE】一个扫描效果(不使用后期处理体积)

效果 步骤 一、制作扫描效果 1. 在3dsmax中新建一个圆形 设置半径为50mm&#xff0c;勾选“自适应” 转换为可编辑多边形 导出 2. 打开虚幻编辑器&#xff0c;导入制作好的模型 3. 创建一个材质&#xff0c;这里命名为“M_Sphere” 打开“M_Sphere”&#xff0c;添加一个“V…

PCIe总线中Root Complex(RC)

在不同的处理器系统中&#xff0c;RC的实现有较大差异。PCIe总线规范并没有规定RC的实现细则。在有些处理器系统中&#xff0c;RC相当于PCIe主桥&#xff0c;也有的处理器系统也将PCIe主桥称为PCIe总线控制器。而在x86处理器系统中&#xff0c;RC除了包含PCIe总线控制器之外&am…

C语言:实现对单链表的反转 函数封装

需求&#xff1a; 实现对单链表的反转 代码实现&#xff1a; #include <stdio.h>typedef struct node{int data;struct node* next; }NODE;void PrintLink(NODE* phead) {NODE* p phead;while(p ! NULL){printf("%d ",p->data);p p->next;}printf(&…

好商品好内容好运营,图文免佣这些爆单技巧你会吗?

图文带货正在成为抖音电商商家们生意增长的新阵地。不同于平台传统的短视频、直播带货&#xff0c;图文体裁以其用户需求大、消费粘性高、深度互动强、正向反馈好的优势&#xff0c;令商家们看到生意新可能&#xff1b;而几张图背景音乐就能实现图文带货的便捷&#xff0c;也为…

瞬态抑制二极管TVS的核心参数?|深圳比创达电子EMC(上)

TVS二极管具有响应速度快、漏电流小、钳位电压稳以及无寿命衰减的特性&#xff0c;从小到信号线静电防护&#xff0c;大到电力系统抗雷击浪涌&#xff0c;TVS都发挥着至关重要的作用。本章对瞬态抑制二极管TVS核心参数展开分析&#xff0c;供产品选型参考。接下来就跟着深圳比创…

PCIe架构的处理器系统介绍

不同的处理器系统中&#xff0c;PCIe体系结构的实现方式不尽相同。PCIe体系结构以Intel的x86处理器为蓝本实现&#xff0c;已被深深地烙下x86处理器的印记。在PCIe总线规范中&#xff0c;有许多内容是x86处理器独有的&#xff0c;也仅在x86处理器的Chipset中存在。在PCIe总线规…

初识Node.js开发

一、Node.js是什么 1.node.js是什么 官方对Node.js的定义&#xff1a; Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码&#xff0c;但是不仅仅只有V8引擎&#xff1a; 前面我们知道V8可以嵌入到任何C 应用…

保证跨境商城源码稳定性的重要性

稳定性保证源码的可靠性 在跨境电商领域&#xff0c;跨境商城源码的稳定性对于商城运营至关重要。一个稳定、可靠的源码能够确保商城的正常运行&#xff0c;提升用户体验&#xff0c;增加交易成功率&#xff0c;并为商城的可持续发展打下基础。 稳定性保证系统顺利运行 跨境商城…

第四个 1024,属于我们!

第四个 1024&#xff0c;只属于我们&#xff0c;愿人世间没有 BUG&#xff01; if (today1024) {printf("拒绝加班&#xff01;")} else {printf("没有Bug&#xff01;")}2023 - 1024 加油&#xff01; 我是故屿 一个在互联网苟且偷生的工具人 若非生…

内衣洗衣机便宜好用的牌子有哪些?四款公认好用洗内裤机推荐

在机器解放了双手的时代中&#xff0c;洗衣机走进了千家万户&#xff0c;虽然在某种程度上缓解了人们手洗衣服的压力&#xff0c;但还是有不少人选择了人工手洗自己的内衣内裤&#xff0c;甚至连袜子都是手工洗的&#xff0c;这让人很是郁闷&#xff0c;倒不是说洗衣机不方便&a…

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台&#xff0c;借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为&#xff1a;Version 2.428 SonarQube版本为&#xff1a;Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…

研发效能(DevOps)职业技术认证-第六期开班啦丨IDCF

本证书是由国家工业和信息化部教育与考试中心颁发的职业技术证书&#xff0c;也是国内首个《研发效能&#xff08;DevOps&#xff09;工程师职业技术认证》。该《认证》对研发效能&#xff08;DevOps&#xff09;工程师的职业技术分为初级、中级、高级三个专业等级。 IDCF社区…

nrf52832 PWM配置

PWM使用时sdk_config.h文件中配置如下:#define PWM_ENABLED 1 #define PWM0_ENABLED 1 #define NRFX_PWM_ENABLED 1 #define NRFX_PWM0_ENABLED 0sdk_config.h 文件中添加下列配置 // <e> NRFX_PWM_ENABLED - nrfx_pwm - PWM peripheral driver // #ifndef NRFX_PWM_ENA…

uniapp实现webview页面关闭功能

实现思路&#xff1a; 1.关闭按钮是使用原生button添加的close属性。&#xff08;见page.json页面&#xff09; 2.监听关闭按钮的方法。&#xff08;onNavigationBarButtonTap&#xff09; 3.写实现关闭webview所有页面的逻辑。 废话不多说&#xff0c;直接上代码 1.page.…

Java的泛型高级篇

以前在看源码的时候&#xff0c;老是能够看见大写的字母&#xff1a;T D...... 他就是用来标志泛型的。就拿ArrarList E就是 &#xff1a;element的简写 T就是Type。 另外一种就很高级&#xff0c;父级和自己约束性泛型&#xff1a; 定义一个顶级父类&#xff1a;TimeTest publ…

SNCP,子网连接保护简介

文章目录 SNCP特点SNCP的保护原理及类型ODUk SNCP工作原理SNCP分类SNC/N&#xff0c;子网连接保护/非介入监测ODUk SNC/ N 保护示意图ODUk SNC/N 的倒换条件 SNCP&#xff08;SubNetwork Connection Protection&#xff09;是一种跨子网的保护机理&#xff0c;可以保护不同基本…