git的基础总结

news2024/11/24 7:59:47
写在前面:
前天搞了个面试,发现好多都是会使用,但是要我说,难得说出来,现在对基础进行巩固总结。其实我感觉要求背出来一样的没必要吧,ide基本上可视化了会用就行吧。

文章目录

  • 介绍
    • git的状态
  • 使用/安装/配置
  • 操作
    • 初始化
    • 跟踪文件(暂存区)
    • 提交(版本库)
      • 补丁操作/撤销
    • 查看文件状态
    • 查询详细
    • 历史记录
  • 远程仓库
    • 链接远程
    • 推送
    • 获取数据
  • 标签管理
  • 分支管理
    • 查看分支
    • 创建分支
    • 切换分支
    • 合并分支
    • 拉取数据
    • 存藏
    • 变基操作
  • 其他
    • 忽视文件

介绍

git是一个分布式开源的版本控制系统。
可以对开发的各种版本进行管理,也可以人多协同开发。
git可以帮助保存文件的所有修改记录,并使用版本号进行区分,可以随时浏览历史记录和各个版本的代码区别。起到恢复和保护的作用

创建git仓库后,会在根文件夹内生成一个.git的隐藏文件夹,里面存放的就是git仓库的信息。

git的状态

工作区:
就是电脑看见的目录
除了隐藏的.git
在这里插入图片描述

暂存区:
一般存放在.git 目录下的 index 文件中,所以我们把暂存区有时也叫作索引。
在这里插入图片描述

版本库
.git文件夹就是整个的版本库,包括index
也就是进行版本管理了,

使用/安装/配置

windows安装:git官网下载

linux安装:

sudo apt install git-all

设置用户
这个对git没有太多影响,只是说明性的,但是必须要有,用于区分提交者

$ git config --global user.name "用户名"
$ git config --global user.email 邮箱

检查配置信息

 git config --list

操作

从使用的流程进行说起:

初始化

首先的就是创建git仓库

git init

初始化本地仓库,会生成一个.git文件夹。
后面还可以跟着一个参数就是目录的地址

git clone <git地址> [<本地目录>]

可以克隆一个git仓库,如可以从代码托管平台github/gitee上来进行。
地址在github上的项目中点击code就可以查看了。
建议在github上使用ssh,https因为墙的原因,速度很慢,而且成功率低。
在这里插入图片描述

跟踪文件(暂存区)

就是说如果让这个文件给git来管理。将文件添加进暂存区

git add <name>

删除暂存区文件

git rm <name>

# 保留在目录但是不被跟踪
git rm --cache <name>

如果修改之后,则还需要通过add来对文件进行修改,这个add命令差不多相当于在暂存里面save or update吧

git add <file-name>

跟踪当前文件夹所有
git add .

提交(版本库)

文件在add会使得文件在暂存区中,而提交则会生成一次版本。

git commit -m "本次版本的消息"
-a 暂存+提交

在这里插入图片描述

提交的时候很多时候会出现,像下面这样的东西
这样表明在代码检查的时候代码出现了错误,或者说代码出现了警告。不让提交
在这里插入图片描述

括号里面其实也说出了解决方式
那就是添加 --no-verify跳过检查
在这里插入图片描述

补丁操作/撤销

如果你提交完后,发现少了或者提交信息写错了那么可以加上 − − a m e n d --amend amend 参数。
如我如果提交之后发现有文件没有在暂存区可以这样操作

git commit -m "123"
git add .
git commit --amend
这样这次的提交记录会覆盖上一次的

撤销提交

git reset head~ --soft
撤销上一次的,不过不能撤销第一次(也就是必须要有提交)

查看文件状态

git status

# 缩短状态命令的输出
git status -s /--short

status下面都有各个的状态和需要的操作
在这里插入图片描述
在这里插入图片描述

查询详细

git diff
查看差异详细

在这里插入图片描述

历史记录

git log
历史提交
-p
按补丁格式显示每个提交引入的差异。

--stat
显示每次提交的文件修改统计信息。

--shortstat

只显示 --stat 中最后的行数修改添加移除统计。

--name-only
仅在提交信息后显示已修改的文件清单。

--name-status
显示新增、修改、删除的文件清单。

--abbrev-commit
仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。

--relative-date
使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。

--graph
在日志旁以 ASCII 图形显示分支与合并历史。

--pretty
使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。
--oneline
--pretty=oneline --abbrev-commit 合用的简写。

-<n>
仅显示最近的 n 条提交。

--since, --after
仅显示指定时间之后的提交。

--until, --before
仅显示指定时间之前的提交。

--author
仅显示作者匹配指定字符串的提交。

--committer
仅显示提交者匹配指定字符串的提交。

--grep
仅显示提交说明中包含指定字符串的提交。

-S
仅显示添加或删除内容匹配指定字符串的提交。



在这里插入图片描述
也可以通过添加pretty参数来美化

git log --pretty=oneline

git log --pretty=format:"自定义格式"
%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date=选项 来定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期(距今多长时间)
%s  提交说明

在这里插入图片描述
在这里插入图片描述
以可视化来大于

git log --graph

在用上分支后才有明显区别,区别在于最左边的。
在这里插入图片描述

远程仓库

链接远程

git remote
查看当前远程仓库名称
-v 将列出所有的远程仓库

在这里插入图片描述

git remote <二级命令>
add 远程仓库名字 远程链接url
添加
rename 原来名字  修改后名字
修改名字
show <remote>
查看某个远程仓库

推送

将本地代码推送到远程仓库

git push 本地分支 远程分支
--tags 推送标签

这样每次都需要输入本地和远程名字
我们可以加上一个-u参数,然后后面的推送就不需要输入了如:
第一次推送:git push -u 本地分支 远程分支
第二次推送:git push
github禁止用户名密码认证,可以用ssh或者令牌来认证

ssh设置

  1. 进入.ssh目录
  2. 输入命令ssh_keygen来生成密钥
    -t 选择生成算法
    -b 密钥大小
    -C 评论
  3. 输入密钥名字
  4. 输入密码
  5. 在github设置界面添加ssh

在这里插入图片描述

获取数据

git fetch <name>
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

标签管理

列出所有标签

git tag
按照通配符列出标签需要 -l 或 --list 选项

创建标签

git tag -a 标签名 -m "消息"

删除标签

git tag -d 标签名

查看某个标签所指向的文件版本

git checkout

分支管理

分支也就相当于我们在改代码的时候,被删除原有的不用的代码,而是拷贝文件在新文件上修改,老文件看情况实用。
分支也就是差不多一个文件相当于一个分支了。

优势:
每个人单独开发一个不同功能的时候,从主分支上分离一个,开发完功能后合并到主分支。不影响其他人的开发。
但是如果2个分支对同一个功能/代码进行修改,则需要手动差异然后才能合并。

查看分支

查看所有
git branch --list

查看当前可以通过下面命令看到
git status
git log

创建分支

git branch 分支名字

切换分支

git checkout name

git checkout -b name
如果name不存在则新建一个name分支并切换

合并分支

git merge name
将name分支合并到现在的分支

如果合并的时候有相同位置的修改,则需要手动修改保留那一部分。在来合并。

拉取数据

git fetch teamone
抓取本地没有的数据时

git pull
将本地仓库和远程仓库(本地的)更新到远程的最新版本

存藏

如果开发到一半想切换其他的是不可以的,要么直接提交在切换,也可以实用这个存藏功能

git stash
存藏当前所修改的东西

git stash apply <stash@{数字}>
恢复刚才存藏的内容

git stash list
查看存藏

git stash pop
恢复最近一次存藏,恢复后直接删掉

git stash drop <stash@{}>
删除 

变基操作

就相当于你本来在a分支上创建的b分支,变基c就相当于在c分支上把b分支操作进行一次。

git rebase name

其他

忽视文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。
特别是像密钥密码什么的,忽视掉这个配置文件也是一种不错的选择。

支持匹配符,写在里面的都是忽视掉的文件

#忽视所有的以yml后缀的文件
*.yml

#忽略所有以 .o 或 .a 结尾的文件
*.[ao]

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

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

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

相关文章

php使用PhpSpreadsheet导出Excel表格详解

本文会介绍php使用PhpSpreadsheet操作Excel&#xff0c;供大家参考&#xff0c;具体内容如下&#xff1a; PhpSpreadsheet介绍 1、简介 PhpSpreadsheet 是一个用纯PHP编写的库&#xff0c;提供了一组类&#xff0c;使您可以读取和写入不同的电子表格文件格式 PhpSpreadsheet …

Jetson查CPU/GPU等的占用情况——jtop的安装和使用

Jtop的安装 (1) 安装JTOP查看可查CPU等的占用情况 sudo apt-get updatesudo apt-get full-upgradesudo apt install curlsudo apt install nanocurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #下载安装脚本sudo python3 get-pip.py # 运行安装脚本sudo pip3 insta…

0401锁详解-MySQL-数据库

1 概述 介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的问题&#x…

解决QtCreator安卓平台原生C++代码无法输出日志问题

1.需求,因原生C++调用std::cout ,std::cerr,及C函数prinf输出要显示在控制台, 问题: 在QtCreator中只看到qDebug输的日志,并没有看到 cout,cerr,printf的输出日志 2.最终已解决如下 在QtCreator中显示了C++原生日志 在Android Studio 的Logcat中显示了C++原生日志 模拟器 …

c++11 标准模板(STL)(std::basic_ostream)(三)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…

印刷企业WMS仓储管理系统解决方案

在数字化转型的浪潮中&#xff0c;印刷企业也积极寻求适合自身发展的解决方案。作为印刷业的重要环节&#xff0c;仓储管理对于提高效率、降低成本至关重要。而印刷企业WMS仓储管理系统的应用&#xff0c;为印刷企业带来了全新的解决方案。 印刷WMS仓储管理系统是一种基于信息技…

简单认识Tomcat的部署和优化

文章目录 一、简单认识Tomcat1、简介2、构成3、Tomcat 功能组件结构4、Tomcat 请求过程&#xff1a; 二、Tomcat部署1.关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2.安装JDK3.设置JDK环境变量4.测试java环境5.安装Tomcat6.启动和关闭Tomcat7.优化 tomcat 启…

synchronized锁升级以后会再降级吗?

Java对象头Markword的结构 其中&#xff0c;最低2位是10代表重量级锁&#xff0c;00代表轻量级锁&#xff0c;001代表无锁&#xff0c;101代表偏向锁。 synchronized锁在1.6的时候做了优化&#xff0c;当仅有一个线程竞争锁的时候&#xff0c;锁处于偏向锁的状态&#xff0c;当…

bim技术的发展趋势是哪些方向?

BIM在现阶段已经取得了较高的发展水平。尽管BIM在许多方面取得了显著进展&#xff0c;但仍有继续改进和发展的空间。未来&#xff0c;BIM在数字化转型、智能化应用和全生命周期管理方面的进一步推进将成为发展重点。简单聊聊BIM技术的发展趋势包括以下几个方向&#xff1a; BIM…

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

其实这些技术在真正的实际开发环境中真的用得到吗&#xff1f;不一定的&#xff0c;但是没办法&#xff0c;环境就是如此&#xff0c;能做的也就只有不断提升自己&#xff0c;去适应市场环境&#xff0c;提高自身技术水平&#xff01; 我的建议&#xff0c;不管自己现在是个什…

2021北大生命科学院饶毅教授毕业致辞

在祝福裹挟着告诫呼啸而来的毕业季&#xff0c;请原谅我&#xff0c;不敢祝愿每一位毕业生都成功都幸福。因为历史不幸的记载着有人的成功&#xff0c;代价是丧失良知&#xff0c;有人的幸福&#xff0c;代价是损害他人。 从物理学来说&#xff0c;无机的原子&#xff0c;逆​热…

Loadrunner怎么实现MD5加密

目录 前言&#xff1a; 1、写一个md5.h文件&#xff0c;将其放入脚本路径下 2、在globals.h中加入#include “md5.h” 3、在Action中写脚本&#xff0c;脚本示例如下&#xff1a; 前言&#xff1a; 在 LoadRunner 中实现 MD5 加密可以通过使用 LoadRunner 提供的函数来完成…

Redis发布订阅的通讯模式

这个是非常简单的,我们只需要打开两个redis就可以轻松完成 通过Xshell工具两次连接linux,同时启动两个redis: 在第一个里面进行订阅: subscribe leq 在第二个里面进行发布: publish leq hello 这样就可以在订阅的里头看到刚刚发布的信息,没看之前订阅那块也会有提示

带纵深可跳跃横版闯关游戏模版

此项目是以《卡比猎人队》为蓝本开发的横版带纵深闯关游戏模版。内涵数据表配置文件。 购买链接&#xff1a; 微店购买链接 开发环境 开发引擎&#xff1a;CocosCreator3.6.3开发语言&#xff1a;TypeScript 包含的内容&#xff1a; 逻辑实现目录介绍&#xff08;game&am…

Visdom使用

Visdom Visdom是一个面向科学研究的可视化工具&#xff0c;可以帮助你可视化和理解数据。它是 Facebook Research 开发的一个基于 Python 的可视化库&#xff0c;可以在Web浏览器中实时显示和更新图表、图像、文本等各种数据。 1 安装Visdom 可以使用以下命令安装Visdom&…

海思平台图像的IQ调试

目录 1.何为ISP何为IQ调试 1.1、ISP概念 1.2、在哪里做ISP 1.3、何为IQ 1.4、总结 2.海思MPP中ISP的实现框架 2.1、官方文档 2.2、sample中ISP相关部分 2.3、sensor注册内部细节 2.4、ISP注册内部细节 3.IQ调试相关的概念 3.1、黑电平 3.2、镜头阴影矫正 3.3、坏点…

《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

1208道Java面试题(2023突击版),覆盖互联网大厂核心知识点

Java 面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。现如今&#xff0c;Java 面试的本质就是八股文&#xff0c;把八股文面试题背好&#xff0c;面试才有可能表现好。…

需求分析引言:架构漫谈(三)可用性专题

前文介绍了非功能性需求的各个指标和一些业界的标准。 非功能性需求里有一项可靠性&#xff0c;与之关联的一个指标叫可用性 本文对非功能性需求里的可用性、可靠性&#xff0c;进行一些详细的说明。 概念 我们在网上的云服务商处&#xff0c;经常看到产品介绍里会有这种字样…

Redis【实战篇】---- 分布式锁-redission

Redis【实战篇】---- 分布式锁-redission 1. 分布式锁-redission功能介绍2. 分布式锁-redission快捷入门3. 分布式锁-redission可重入锁原理4. 分布式锁-redission锁重试和WatchDog机制5. 分布式锁-redission锁的MutiLock原理 1. 分布式锁-redission功能介绍 基于setnx实现的分…