Git工具的详细使用

news/2024/5/10 2:17:47

一、环境说明

[root@git ~]# getenforce
Disabled
[root@git ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)3月 23 09:35:07 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
3月 23 09:35:08 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
3月 23 09:35:08 localhost.localdomain firewalld[1466]: WARNING: AllowZoneDrifting is enabled. This is co...ow.
3月 23 09:35:16 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
3月 23 09:35:16 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@git ~]# uname -a
Linux git 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@git ~]# rpm -qa centos-release
centos-release-7-9.2009.0.el7.centos.x86_64

二、git的两种安装方式

1、yum安装git

centos自带git

[root@git ~]# rpm -qa git
git-1.8.3.1-25.el7_9.x86_64

 安装方法

[root@git ~]# yum install git -y
2、编译安装

编译安装可以安装较新版本的git

Git下载地址: Releases · git/git · GitHub

 

# 安装依赖关系
[root@git ~]# yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel autoconf gcc perl-ExtUtils-MakeMaker
# 编译安装 
[root@git ~]# tar -zxf git-2.0.0.tar.gz
[root@git ~]# cd git-2.0.0
[root@git ~]# ./configure --prefix=/usr/local/git # 没有文件可以略过
[root@git ~]# make  
[root@git ~]# make install 

三、初次运行 Git 前的配置

 配置git

git config --global user.name "username"  #配置git使用用户
git config --global user.email "email@mail.com"  #配置git使用邮箱
git config --global color.ui true  #语法高亮
git config --list # 查看全局配置

 四、获取 Git 仓库(初始化仓库)

1、创建裸库
[root@git ~]# useradd git
[root@git ~]# passwd git
更改用户 git 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@git ~]# mkdir /git-root/
[root@git ~]# cd /git-root/
[root@git git-root]# git init --bare shell.git
初始化空的 Git 版本库于 /git-root/shell.git/
[root@git git-root]# chown -R git:git shell.git
[root@git git-root]# ll
总用量 0
drwxr-xr-x 7 git git 119 3月  23 10:32 shell.git
2、创建本地库
[root@git ~]# cd /opt/
[root@git opt]# ssh-keygen
[root@git opt]# ssh-copy-id git@10.12.153.234
[root@git opt]# git clone git@10.12.153.234:/git-root/shell.git
正克隆到 'shell'...
warning: 您似乎克隆了一个空版本库。
[root@git opt]# ls
shell
[root@git opt]# cd  shell/
[root@git shell]# ll
总用量 0

五、git的使用 

1、添加新文件

git add  * 添加到暂存区域
git commit  提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看

[root@git shell]# pwd
/opt/shell
[root@git shell]# vim test1.sh
[root@git shell]# git add test1.sh
[root@git shell]# git commit -m 'first commit'
[master(根提交) 2b45ee9] first commit1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 test1.sh
[root@git shell]# git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@10.12.153.234:/git-root/shell.git* [new branch]      master -> master

 常用操作示意图

2、删除git内的文件 

命令说明:

• 没有添加到暂存区的数据直接rm删除即可。

• 已经添加到暂存区数据:

git rm --cached database

#→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)

git rm -f database

#→将文件数据从git暂存区和工作目录一起删除

3、查看历史记录

• git log #→查看提交历史记录

• git log -2 #→查看最近几条记录

• git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异

• git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息

• git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息

• git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录

• git log --pretty=fomat:"%h %cn" #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名

[root@git shell]# git log
commit d900a5e7559cda2372b18079c7e65f89c23a490f
Author: xiaowang <1196431288@qq.com>
Date:   Sat Mar 23 10:53:31 2024 +0800second commitcommit 2b45ee9416fa183675f413d1911f75a56efe2e7d
Author: xiaowang <1196431288@qq.com>
Date:   Sat Mar 23 10:49:38 2024 +0800first commit
4、还原历史数据

 Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。

git reset --hard hash值

git reset --hard HEAD^ #→还原历史提交版本上一次

git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统

会自动匹配)

5、还原未来数据

什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。

git reflog #→查看未来历史更新点 (见上图)

6、标签使用 

前面回滚使用的是一串字符串,又长又难记。

git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。

git tag #→查看当前所有的标签

git show v1.0 #→查看当前1.0版本的详细信息

git tag v1.2 -m "version 1.2 release is test" #→创建带有说明的标签,-a指定标签名字,-m指定说明文字

git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0

7、对比数据

git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改

后,再把它提交到仓库就放⼼多了。

git diff README
git diff --name-only HEAD HEAD^
git diff --name-only head_id head_id2

六、分支结构 

在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。

那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。所以团队的合作分支看起来会像下图那样。

1、切换分支/创建分支 
 2、在newttt分支修改
[root@git shell]# git branchmasternewrain
* newttt
[root@git shell]# cat README
cat: README: 没有那个文件或目录
[root@git shell]# echo '1901' >> README 
[root@git shell]#  git add .
[root@git shell]#  git commit -m '1901'
[newttt 938ad56] 19012 files changed, 1 insertion(+)create mode 100644 READMEcreate mode 100644 test3.sh
 3、回到master分支
[root@git shell]# git checkout master
切换到分支 'master'
[root@git shell]# cat README
cat: README: 没有那个文件或目录
[root@git shell]# git log  -1
commit d900a5e7559cda2372b18079c7e65f89c23a490f
Author: xiaowang <1196431288@qq.com>
Date:   Sat Mar 23 10:53:31 2024 +0800second commit
 4、合并代码
[root@git shell]# git merge newttt
更新 d900a5e..938ad56
Fast-forwardREADME   | 1 +test3.sh | 02 files changed, 1 insertion(+)create mode 100644 READMEcreate mode 100644 test3.sh
[root@git shell]# cat README 
1901
[root@git shell]# git log -1
commit 938ad56feacac2e99487b7cb7ae561ae3ce49225
Author: xiaowang <1196431288@qq.com>
Date:   Sat Mar 23 12:09:12 2024 +08001901

 


http://www.mrgr.cn/p/83110868

相关文章

Selenium浏览器自动化测试框架详解

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google C…

【转】linux设置密钥登录(只允许密钥登录)

转, 原文: https://www.cnblogs.com/dyj--php/p/9656016.html ----------------- 一.root用户使用这条命令看看家目录有没有(.ssh文件夹),cd .ssh,如果存在就会进入这个文件夹,不存在就(makedir .ssh),修改.ssh这个文件夹权限(chmod 700 .ssh),查看.ssh文件夹下是…

嵌入式作业2.1 汇编练习

目录原始参考代码(main.s)作业一、翻译汇编成C语言二、修改参考代码 原始参考代码(main.s) 汇编代码: //===================================================================== //文件名称:main.s //功能概要:汇编编程调用GPIO构件控制小灯闪烁(利用printf输出提示信…

window10 安装 Redis

一、下载压缩包(免安装) 地址: https://github.com/tporadowski/redis/releases二、解压解压路径自定义 Logs目录,手动添加的,用于保存redis的日志记录 (下面再补充)下图为解压后的文件三、注册Redis服务以管理员权限打开cmd窗口,执行以下命令# 安装redis服务 redis-se…

Camera基础知识四

MIPI-CSI2的PHY层定义了CSI传输介质的电气特性、帧格式以及时钟等,如下:DPHY Lane States:Escape Mode跟csi无关,是DSI用的LP切换到HS模式切换:差分信号一般100mv - 300mv HS_SETTLE,这段时间,1.2V降到100-300mv需要时间稳定下来。HS_ZERO表示发送为0。 一旦MIPITX发送0…

Spring Cloud 十:Spring Cloud与微前端

Spring Cloud 一&#xff1a;Spring Cloud 简介 Spring Cloud 二&#xff1a;核心组件解析 Spring Cloud 三&#xff1a;API网关深入探索与实战应用 Spring Cloud 四&#xff1a;微服务治理与安全 Spring Cloud 五&#xff1a;Spring Cloud与持续集成/持续部署&#xff08;CI/C…

Fiddler(6)AutoResponder

Fiddler最实用的功能, 它可以抓取在线页面保存到本地进行调试, 大大减少了在线调试的困难, 可以让我们修改服务器端返回的数据的

WinRadius 配置指南

WinRadius 配置指南 1 RADIUS概述 RADIUS 是一种用于在需要认证其链接的网络访问服务器(NAS)和共享认证服务器之间进行认证、授权和记帐信息的文档协议。 RADIUS在运维审计系统中,主要体现的是认证功能。 2 设置WinRadius服务器的操作步骤 (1)运行WinRadius。在真实计算机…

Camera基础知识三

参考资料:极客笔记 侵权联删Camera sensor状态机:状态机:POWER OFF、hardware standby、software、streaming 没电的时候就是power off状态,上电了进入hardware standby状态,xshutdown也就是reset,进入software standby状态。PLL寄存器配置进去之后就进入streaming状态Ca…

C语言例4-15:从键盘输入一个整数,求其绝对值并输出。

代码如下&#xff1a; //从键盘输入一个整数&#xff0c;求其绝对值并输出。 #include<stdio.h> int main(void) {int n;printf("输出一个整数&#xff1a; \n");scanf("%d",&n); //从键盘输入一个整数保存至变量nif(n<0) //…

Linux相关命令(1)

1、找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件&#xff0c;然后把他们重新生成一下。要求只能用一行命令。 find ./ -type f -name "*aaa*" ! -name "*bbb*" -exec touch {} \;文件系统操作命令 df&#xff1a;列出文件系统的整体磁盘使用情况 …

Linux更换默认终端

在更换不同版本的gcc/g++时,提到了update-alternatives这个默认程序,这里同样要用。 下载完终端以后, sudo update-alternatives --config x-terminal-emulator然后运行即可

C语言:文件操作解析

在本文的开篇&#xff0c;我们要探讨为什么要使用文件&#xff1f;我们写的程序的数据是存储在电脑的内存中的&#xff0c;没有文件&#xff0c;如果程序退出&#xff0c;内存收回&#xff0c;数据就会丢失&#xff0c;等再次运行程序的时候&#xff0c;上次程序中的数据就找不…

运行.sh脚本文件

linux中.sh文件是脚本文件(shell脚本) 它可以将不同的命令组合起来,并按确定的顺序自动连续地执行。脚本文件是文本文件,用户可使用文本编辑器来创建脚本文件。 eg. 我利用vim 编写了如下内容: echo 我来了 echo 我走了 echo 这是test.shecho 是一个 Shell 内建命令 ,用来…

第1章 Hive基本概念

1.1 什么是Hivehive简介Hive:由facebook开源用于解决海量结构化日志的数据统计工具。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能。 2) Hive本质:将HQL转化成MapReduce程序。3) Hive的三个要点:Hive处理的数据存储在…

解决element-ui el-select数据过大方案

一、背景 项目中需要用到el-select选择医院,全国医院数据量非常大,通过API读取数据页面直接卡死。二、解决方案 1、组件:el-select + vue虚拟滚动(vue-virtual-scroll-list) 2、安装:npm install vue-virtual-scroll-list --save 3、参考:NPM地址:https://www.npmjs.co…

linux安装/切换不同版本c/c++

查看ubuntu系统上g++的版本:ls /usr/bin/g++*安装指定版本gcc和g++# 以version == 4.9为例 sudo apt-get install gcc-4.9 g++-4.9切换不同版本 当ubuntu系统上安装了不同版本的gcc和g++,可以使用update-alternatives命令设置默认使用哪个版本,典型的如在Ubuntu 16.04里安装…

.ipynb

“.ipynb” 文件是使用 Jupyter Notebook 来编写Python程序时的文件。 它可以在github直接打开,也可以通过网站打开(都没用过) 网站地址——   http:// https://nbviewer.jupyter.org/下载过Anaconda的,它自带jupyte 在菜单打开jupyter notebook(Windows中),就会自动打…

Spring+thymeleaf完成用户管理页面的增删查改功能

目录 知识点&#xff1a; 路由重定向 redirect:/*** 登录 控制层代码 接口 sql配置 页面效果 添加用户 控制层代码 接口 sql配置 页面效果 查看信息 控制层代码 接口 sql配置 页面效果 修改信息 控制层代码 接口 sql配置 页面效果 条件查询 控制层代码 …