Git 保姆级使用教程

news2024/11/27 0:45:13

目录

一、Git介绍

二、Git 与 SVN 区别

三、Git 安装配置

1.Linux 平台上安装

Debian/Ubuntu

Centos/RedHat

源码安装

2.Windows 平台上安装

3.Mac 平台上安装

四、安装完成后配置

五、创建版本仓库

六、Git常用命令

1.创建仓库命令

2.提交与修改

3.提交日志

4.远程操作

七、区域划分和Git命令应用示例

区域划分

应用示例:

1.编写readme.md文件

2.git add 把文件从工作区提交到暂存区

3.git status查看仓库中的暂存区当前状态

4.git commit 把暂存区的文件提交到仓库中的永久区(第一次提交)

5.git status 再次查看仓库中的暂存区当前状态

6.提交到暂存区的文件被修改后的提示

7.git commit 把暂存区的文件提交到仓库中的永久区(第二次提交)

8.git log 查看历史提交记录

9.git reflog 查看历史命令,便于查看所有历史 commit_id(例如图片中a357aa6)

10.git reset --hard a357aa6

11.git rm fileName 丢弃工作区的修改内容,从版本库的暂存区恢复

八、Git分支管理

1. git branch 从主线上创建分支 (前提是已经有master)​编辑

2. 分别向主线和分支提交多次文件后用 git merge 进行合并分支

3.发现合并冲突,原因是主线跟分支上的文件内容不同

4.在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决

5.最后输出git log --graph --pretty=oneline --abbrev-commit  查看分支日志 


一、Git介绍

Git是一个开源的分布式版本控制系统,最初由Linus Torvalds为Linux内核开发而创建。

Git允许多人同时修改同一个代码库并跟踪所有修改的历史记录。

使用Git可以方便地管理和协调项目代码的开发和维护,在开源社区和软件开发中广泛应用。

Git使用简单的命令行接口,也有许多可视化的图形界面工具可供选择。

此外,Git还提供了强大的分支和合并功能,可以轻松地管理多个开发分支和合并它们的变化。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

二、Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。

Git 与 SVN 区别点:

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

三、Git 安装配置

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

Git 各平台安装包下载地址为:Git - Downloads


1.Linux 平台上安装

Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。

在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系),可以用下面的命令安装:

各 Linux 系统可以使用其安装包管理工具(apt-get、yum 等)进行安装:

Debian/Ubuntu

Debian/Ubuntu Git 安装命令为:

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev 
$ apt-get install git 
$ git --version git version 1.8.1.2
Centos/RedHat

如果你使用的系统是 Centos/RedHat 安装命令为:

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ yum -y install git-core

$ git --version
git version 1.7.1
源码安装

我们也可以在官网下载源码包来安装,最新源码包下载地址:Git - Downloads

安装指定系统的依赖包:

########## Centos/RedHat ##########
$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

########## Debian/Ubuntu ##########
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

解压安装下载的源码包:

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

2.Windows 平台上安装

在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:

安装包下载地址:Git for Windows

官网慢,可以用国内的镜像:CNPM Binaries Mirror。

完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。

在开始菜单里找到"Git"->"Git Bash",会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。


3.Mac 平台上安装

在 Mac 平台上安装 Git 最容易的当属使用图形化的 Git 安装工具,下载地址为:

git-osx-installer download | SourceForge.net

安装界面如下所示:

18333fig0107-tn

四、安装完成后配置

输入命令设置名字和邮箱

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

设置完成后输入命令查看

git config --global --list

五、创建版本仓库

 操作步骤

  1. 在自己喜欢的地方创建一个目录
  2. 在命令行终端进入这个目录
  3. 在这个目录中输入 git init 初始化目录为 Git 仓库
  4. 初始化完成后,查看仓库目录下是否生成 .git 目录(Linux 下 .开头的文件尾隐藏文件)

六、Git常用命令

1.创建仓库命令

下表列出了 git 创建仓库的命令:

命令说明

git init

初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。

2.提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

下表列出了有关创建与提交你的项目的快照的命令:

命令说明
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit -m ""提交暂存区到本地仓库,"引用备注"
git reset --hard commit_id [head^...]回退版本,跳转到指定的 commit_id 或者现对于当前节点的某个节点,`^` 表示上一个 
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。
git checkout分支切换。
git switch更清晰地切换分支。
git restore恢复或撤销文件的更改。

3.提交日志

命令说明
git log查看历史提交记录
git reflog查看历史命令,便于查看所有历史 commit_id

4.远程操作

命令说明
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并

七、区域划分和Git命令应用示例

区域划分

  • - 工作区:提供代码编辑的工作区,只是在仓库的目录里中,并没有真正的添加到仓库
  • - 暂存区:仓库中的暂存区,在工作区通过 add 添加到暂存区,可查看代码与工作区的变更情况,选择是否添加到正式的仓库区
  • - 时光轴:仓库中的永久区,是由暂存区通过 commit 提交之后的存储区。可记录每一次的正式提交,用于时光倒流

应用示例:

1.编写readme.md文件
2.git add 把文件从工作区提交到暂存区
3.git status查看仓库中的暂存区当前状态

4.git commit 把暂存区的文件提交到仓库中的永久区(第一次提交)
5.git status 再次查看仓库中的暂存区当前状态

6.提交到暂存区的文件被修改后的提示

绿颜色->暂存区跟白色工作区一样

7.git commit 把暂存区的文件提交到仓库中的永久区(第二次提交)
8.git log 查看历史提交记录
9.git reflog 查看历史命令,便于查看所有历史 commit_id(例如图片中a357aa6)
10.git reset --hard a357aa6

11.git rm fileName 丢弃工作区的修改内容,从版本库的暂存区恢复

八、Git分支管理

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

Git 分支实际上是指向更改快照的指针。

有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。

与分支有关常用命令:

git branch <branchName>创建分支 
git checkout -b <branchName>创建并同时选择新的分支 
git checkout/switch <branchName>选择分支               
git branch -d <branchName>删除分支 
git merge <branchName>合并到分支 
git log --graph --pretty=oneline --abbrev-commit查看分支日志 

1. git branch <branchName> 从主线上创建分支 (前提是已经有master)

2. 分别向主线和分支提交多次文件后用 git merge 进行合并分支

3.发现合并冲突,原因是主线跟分支上的文件内容不同

4.在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决

5.最后输出git log --graph --pretty=oneline --abbrev-commit  查看分支日志 

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

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

相关文章

高可用双机GPFS集群的的自动化部署脚本

1.环境说明&#xff1a; 系统主机名IP地址内存添加共享磁盘大小Centos7.9gpfs1192.168.10.1012G20GCentos7.9gpfs2192.168.10.1022G20G 2.配置共享硬盘&#xff1a; 前提&#xff1a;两台虚拟机没有拍摄快照 在mds001主机中&#xff1a; 添加五块5G的硬盘 SCSI > 创建新虚…

【Javascript】数组的基本操作

目录 声明 字面量形式 构造函数声明 访问数组中的元素 数组的长度 增删改查 增 通过索引添加数据 在数组后面添加数据 在数组前添加数据 删 删除数组中最后一个元素 删除数组中第一个元素 改 查 数组是⼀种列表对象&#xff0c;它的原型中提供了遍历和修改元素的…

力扣每日一题59:螺旋矩阵||

题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&am…

专业安卓实时投屏软件:极限投屏(QtScrcpy作者开发)使用说明

基本介绍 极限投屏是一款批量投屏管理安卓设备的软件&#xff0c;是QtScrcpy作者基于QtScrcpyCore开发&#xff0c;主要功能有&#xff1a; 设备投屏&控制&#xff1a;单个控制、批量控制分组管理wifi投屏adb shell快捷指令文件传输、apk安装 更多功能还在持续更新。 极…

【C语言小游戏--猜数字】

文章目录 前言1.游戏描述2.代码实现2.1打印菜单2.2构建基础框架2.3玩游戏2.3.1生成随机数2.3.1.1rand()2.3.1.2srand()2.3.1.3time() 2.3.2game() 2.4自己设定猜的次数 3.完整代码 前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏&#xff0c;下…

Milk-V Duo移植rt-thread smart

前言 &#xff08;1&#xff09;PLCT实验室实习生长期招聘&#xff1a;招聘信息链接 &#xff08;2&#xff09;首先&#xff0c;我们拿到Milk-V Duo板子之后&#xff0c;我个人建议先移植大核Linux。因为那个资料相对多一点&#xff0c;也简单很多&#xff0c;现象也容易观察到…

RK3568平台 GPIO子系统框架

一.gpio 子系统简介 gpio 子系统顾名思义&#xff0c;就是用于初始化 GPIO 并且提供相应的 API 函数&#xff0c;比如设置 GPIO为输入输出&#xff0c;读取 GPIO 的值等。gpio 子系统的主要目的就是方便驱动开发者使用 gpio&#xff0c;驱动 开发者在设备树中添加 gpio 相关信…

什么是网络编程?Java如何实现?三次握手和四次挥手?

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Java网络编程 什么是网络编程&#xff1f;Java…

PAM从入门到精通(二十)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;十九&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 七、PAM-API各函数源码详解 前边的文章讲解了各PAM-API函…

SAP MM学习笔记38 - 入库/请求自动决济(ERS - Evaluated Receipt Settlement)

之前的章节学习了请求书的方方面面&#xff0c;这一章来个终章&#xff0c;入库/请求自动决济&#xff1a;&#xff09;。 1&#xff0c;什么是 ERS ERS&#xff0c;即 入库/请求自动决济&#xff0c;是 自動決済&#xff08;Automatic Settlement&#xff09;功能的一种。 以…

深入理解C++红黑树的底层实现及应用

文章目录 1、红黑树简介1.1 、概述&#xff1a;介绍红黑树的定义、特点和用途。 2、红黑树节点的定义3、红黑树结构3.1、红黑树的插入操作 4、红黑树的验证4.1、红黑树的删除4.2、红黑树与AVL树的比较4.3、红黑树的应用 5、总结 1、红黑树简介 1.1 、概述&#xff1a;介绍红黑…

视频剪辑教程:批量修改视频尺寸的简单方法

如果您需要批量修改大量视频的尺寸&#xff0c;这是一项繁琐且耗时的任务。但是&#xff0c;使用固乔剪辑助手&#xff0c;您可以通过简单的几个步骤轻松实现这一需求。下面是如何使用固乔剪辑助手来批量修改视频尺寸的步骤&#xff1a; 步骤1&#xff1a;导入视频素材 首先&am…

【Solidity】智能合约案例——②供应链金融合约

目录 一、合约源码分析&#xff1a; 二、合约整体流程&#xff1a; 1.部署合约&#xff1a; 2.添加实体 3.发送交易存证 ①.银行向公司交易&#xff08;公司向银行提供交易存证&#xff09; ②.公司向银行交易&#xff08;银行向公司提供交易存证&#xff09; ③.公司向公司交…

git(部分)

1、git三个区域&#xff1a;工作区&#xff0c;暂存区&#xff0c;版本库 2、git文件状态&#xff1a;未跟踪&#xff0c;已跟踪&#xff08;新添加&#xff0c;未修改&#xff0c;已修改&#xff09; 如何查看暂存区和工作区文件状态&#xff1a;git status -s 3、查看版本记…

【Java】Java 17 新特性概览

Java 17 新特性概览 1. Java 17 简介2. Java 17 新特性类型推断 - 新的 var 关键字垃圾回收器改进JEP 356 增强的伪随机数生成器&#xff08;1&#xff09;提供了一个新接口 RandomGenerator&#xff08;2&#xff09;提供了一个新类 RandomGeneratorFactory&#xff08;3&…

高校教务系统登录页面JS分析——西安科技大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

42908-2023 纺织染整助剂产品中有机卤素含量的测定

1 范围 本文件描述了纺织染整助剂产品中有机卤素含量的测定方法。 本文件适用于各类纺织染整助剂中有机卤素含量的测定&#xff0c;包括有机氟、有机氯、有机溴。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中&#xff0c;注日…

自然语言处理---Transformer模型

Transformer概述 相比LSTM和GRU模型&#xff0c;Transformer模型有两个显著的优势&#xff1a; Transformer能够利用分布式GPU进行并行训练&#xff0c;提升模型训练效率。 在分析预测更长的文本时&#xff0c;捕捉间隔较长的语义关联效果更好。 Transformer模型的作用 基于seq…

香港科技大学广州|先进材料学域博士招生宣讲会—上海专场!!!(暨全额奖学金政策)

香港科技大学广州&#xff5c;先进材料学域博士招生宣讲会—上海专场&#xff01;&#xff01;&#xff01;&#xff08;暨全额奖学金政策&#xff09; “跨学科融合创新&#xff0c;引领新兴与未来行业的突破与发展——先进材料学域” &#xfffd;&#xfffd;&#xfffd;…