GIT使用,看它就够了

一、目的

Git的熟练使用是一个加分项,本文将对常用的Git命令做一个基本介绍,看了本篇文章,再也不会因为不会使用git而被嘲笑了。

二、设置与配置

在第一次调用Git到日常的微调和参考,用得最多的就是confighelp命令。

2.1 git config

Git有很多默认操作,其中大部分都可以更改,也可以指定成你的偏好方式。这涉及方方面面的设置,从告诉git你的姓名到特定的终端颜色使用的编辑器。该命令可以选择全局配置或者针对某些仓库进行设置。可以将配置变量储存在三个不同的位置。

1)/etc/gitconfig文件

包含系统中所有用户及其仓库的值。如果你向git config传入--system选项,会专门从该文件中读写配置变量。

2)~/.gitconfig

针对的是你自己,可以传入--global选项是git专门从该文件中读写配置变量。

3).git/config

针对单个仓库。 每一级都会覆盖上一级中的设置,因此.git/config中的值优于/etc/gitconfig中的值。

2.2 用户身份

安装好Git后的第一件事就是设置用户名和电子邮件地址。因为git的每一次提交都需要用到这些信息,而且还会被设置到所创建的提交中,不可更改。设置命令如下:

git config --global user.name "xxx"
git config --global user.email "xxx"

2.3 个人编辑器

设置好身份之后就可以配置默认的文本编辑器了,当git需要输入消息的时候会用到这个编辑器。如果没有设置,会使用系统默认的编辑器。

git config --global core.editor "xxx"

2.4 检查个人配置

如果想查看你的设置,可以通过下面的命令查看:

git config --list
git config <key>

你可能会多次看到同一个键值的输出,这是因为git会从不同文件(/etc/gitconfig和~/.gitconfig)中读取相同的键。可以通过下面命令查看每个键的值。

2.5 获取帮助

如果在使用git的过程中需要帮助,有两种方法可以查看帮忙。

git help <verb>
git <verb> --help

三、获取与创建项目

建立git项目的方法有两种。一种是把现有的项目或者目录导入到git中,另一种是从服务器上克隆现有的git仓库。

3.1 git init

要在现有目录中初始化git仓库,只需进入项目并输入:

git init

这会创建一个.git的子目录。这个子目录包含了构成git仓库骨架的所有必需文件。

3.2 git clone

如果需要获取现有仓库的一个副本,可以使用:

git clone [url]

git clone命令其实有些像是多条命令的组合。它创建一个新目录,进入该目录并执行git init来初始化一个空的新仓库,为指令的URL添加一个远程仓库,对远程仓库执行git fetch,然后通过git checkout将最新的提交检出到工作目录。

四、快照基础

对于暂存工作内容然后提交至历史记录这种基本的工作流,只设计少说基础命令。

4.1 git add

git add 命令将工作目录中的内容添加到暂存区(或"索引"),以备下次。git commit命令在执行时,默认只查看暂存区,因此git add的执行结果与下次提交的快照一模一样。

git add 

4.2 git status

此命令可以显示出工作目录和暂存区中文件的不同状态。其中包含哪些文件已修改但未暂存,哪些已暂存但尚未提交。在正常的显示中,该命令还会包含一些有关如何在暂存区之间移动文件的提示。

git status

4.3 git diff

git diff 命令可英语查看任意两棵树之间的差异。这种差异可以存在于工作环境与暂存区之间(git diff)、暂存区与最后一次提交之间(git diff --cached或git diff --staged)或是两次提交之间(git diff master branchB)。

git diff
git diff --cached
git diff --staged
git diff master branchB

4.4 git commit

git commit命令接受由git add暂存的所有文件能内容,并在数据库中记录一份新的永久性快照,然后将当前分支的指针指向它。如果相对对上一次的提交进行修改,使用git commit --amend

git commit
git commit --amend

4.5 git reset

git reset命令主要用户撤销操作,从命令中的动词就能猜出个大概。它能够移动HEAD指针,更改索引或暂存区,如果你使用--hard,还可以更改工作目录。最后一项功能如果使用不当,有可能会造成工作成果的丢失,所以在使用前要确定自己完全理解了用法。

git reset
git reset --hard 

4.6 git rm

git rm命令用于从git的暂存区和工作目录中移动文件。与git add类似,它会暂存下一次提交的文件删除操作。

git rm

4.7 git mv

git mv是一个便捷命令,它可以移动文件,然后分别在新文件上执行git add,在旧文件上执行git rm。

git rm

4.8 git clean

git clean命令用于移除工作目录中不需要的文件。这些文件包含项目构建过程中产生的临时文件或者冲突文件。

git clean

五、分支与合并

在git中,少数命令实现了大部分的分支与合并功能。

5.1 git branch

git branch实际上类似一个分支管理工具。它可以列出你拥有的分支、创建新分支、删除分支以及重命名分支。

git branch

5.2 git checkout

git checkout命令用于切换分支并将内容检出到工作目录中。

git checkout 已有分支
git checkout -b 新分支

5.3 git merge

git merge命令用于将一个或多个分支合并到已检出的分支,然后将合并结果设为当前分支。

git merge <branch> // 要合入分支的名字

5.4 git log

git log命令可以从最近的提交快照开始,向后显示项目的可访问历史记录。它默认只显示当前所在分支的历史记录,但是也可以提供进行遍历的其他分支。该命令还经常用于显示两个或多个分支在提交层面上的差异。

git log

-p和--stat项目来熟悉每次提交所引入的变化。 --pretty和--oneline选项查看更简洁的历史记录。 --decorate选项轻松实现分支指针位置可视化,还可以利用--graph选项来查看分叉历史究竟是什么样子。

5.5 git stash

git stash命令用于临时存储未提交的工作,这样做为的是无需提交未完成工作的情况下清理工作目录。

git stash
git stash pop

5.6 git tag

git tag命令可以给代码历史记录中的某个历史点指定一个永久性的书签。它通常用于发布相关的事项。

git tag -a

六、项目共享及更新

在git中,访问网络的命令并不多,基本上所有命令的操作对象都是本地数据库。如果你打算共享工作成果或是从别处拉去拉取变更,有几个命令可以用处理远程仓库。

6.1 git fetch

git fetch命令与远程仓库通信,获取该仓库中尚未拥有的所有内容,并将其保存在本地数据库中。

git fetch

6.2 git pull

git pull命令基本上就是git fetch和git merge命令的组合,git先从指定的远程仓库中获取内容,然后立刻尝试将其合入你所在的分支。

git pull

6.3 git push

git push命令能够与其他仓库通信,确定本地数据库与远程仓库在内存上存在的不同,然后将差异推送到其他仓库。

git push

6.4 git remote

git remote命令可用于管理远程仓库记录。可以将很长的URL保存成一个简短的句柄,比如origin,这样就不用总是输入一串内容了。你可以拥有多个这样的句柄,并且可以使用git remote命令添加、更改和删除句柄。

git remote

6.5 git submodule

git submodule命令用于管理普通仓库中设计的外部仓库。这些外部仓库可以用于库或其他类类型的共享资源。该命令有若干子命令(add、update、sync等),可以管理这些资源。

git submodule udpate --init
git submodule udpate --recursive // 递归更新子仓库

七、检视与比较

7.1 git show

git show命令能够以一种简单易读的形式显示Git对象。通常可以使用该命令来显示标签或提交的相关信息。

git show

7.2 git shortlog

git shortlog命令用于归纳git log命令的输出。它使用的很多选项与git log命令一样,但是该命令并不会列出所有提交,而是展示按作者进行分组的提交汇总信息。

git shortlog

7.3 git describe

git describe命令可以接受任何能够解析为提交的内容,然后生成一个比较易读且不会改变的字符串。它可以用来获取提交的描述信息,与提交的SHA-1值一样,它也是无歧义的。

git describe

八、调试

git 有一些命令可以帮忙排除代码中存在的问题。从判断故障源到找出故障的始作俑者,不一而足。

8.1 git bisect

git bisect是一款极为有用的调试工具,他通过自动二分查找来找出究竟是哪一个提交首先引入了bug或造成了问题。

git bisect

8.2 git blame

git blame命令会标注文件中的行,标注内容包括文件中每一行最后的变更是哪一次提交引入的以及该提交的作者。这有助于找出具体的个人,以便询问有关特定代码的详细信息。

git blame

8.3 git grep

git grep命令可以帮助你在源代码的所有文件,甚至是项目的旧版本找到任意字符串。

git grep

九、打补丁

Git 中有少数命令将提交视为引入的变更,一连串提交就是一系列补丁。这些命令可以帮助你以此种方式管理分支。

9.1 git cherry-pick

git cherry-pick命令可以使用单个git提交所引入的变更,并尝试将其作为当前分支上的一个新提交重新引入。选择从分支中单独提取一到两个提交,而不是将所有变更都合并到分支中,这种做法还是有用处的。

git cherry-pick

9.2 git rebase

git rebase命令基本上就是一个自动化的git cherry-pick命令。它确定一系列提交,然后再以相同的顺序逐个对其挑拣。

git rebase

9.3 git revert

git revert命令的效果与git cherry-pick命令相反。它将你提交的变更以完全相反的方式应用,实际上就是将变更撤销或还原。

git revert

9.4 git apply

git apply命令可以应用由git diff命令生成的补丁。

git apply

一个专注于“嵌入式知识分享”、“DIY嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4核16G幻兽帕鲁服务器性能测评,真牛

腾讯云幻兽帕鲁服务器4核16G14M配置&#xff0c;14M公网带宽&#xff0c;限制2500GB月流量&#xff0c;系统盘为220GB SSD盘&#xff0c;优惠价格66元1个月&#xff0c;277元3个月&#xff0c;支持4到8个玩家畅玩&#xff0c;地域可选择上海/北京/成都/南京/广州&#xff0c;腾…

第十六章 Spring cloud stream应用

文章目录 前言1、stream设计思想2、编码常用的注解3、编码步骤3.1、添加依赖3.2、修改配置文件3.3、生产3.4、消费3.5、延迟队列3.5.1、修改配置文件3.5.2、生产端3.5.2、消息确认机制 消费端 前言 https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit 官方定…

GPT-SoVITS 本地搭建踩坑

GPT-SoVITS 本地搭建踩坑 前言搭建下载解压VSCode打开安装依赖包修改内容1.重新安装版本2.修改文件内容 运行总结 前言 传言GPT-SoVITS作为当前与BertVits2.3并列的TTS大模型&#xff0c;于是本地搭了一个&#xff0c;简单说一下坑。 搭建 下载 到GitHub点击此处下载 http…

【网站项目】基于SSM的246品牌手机销售信息系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

蓝桥杯——每日一练(简单题)

题目 给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。 解析 一、通过input&#xff08;&#xff09;函数获得需要转化的数字个数 二、for循环的到数字 三、for循环先将16进制转化为10进制&#xff0c;再输出8进制 代码 运行结果

直线拟合(支持任意维空间的直线拟合,附代码)

文章目录 一、问题描述二、推导步骤三、 M A T L A B MATLAB MATLAB代码 一、问题描述 给定一系列的三维空间点 ( x i , y i , z i ) , i 1 , 2 , . . . , n (x_i,y_i,z_i),i1,2,...,n (xi​,yi​,zi​),i1,2,...,n&#xff0c;拟合得到直线的方程。本文的直线拟合方法适用于任…

如何用一根网线和51单片机做简单门禁[带破解器]

仓库:https://github.com/MartinxMax/Simple_Door 支持原创是您给我的最大动力… 原理 -基础设备代码程序- -Arduino爆破器程序 or 51爆破器程序- 任意选一个都可以用… —Arduino带TFT屏幕——— —51带LCD1602——— 基础设备的最大密码长度是0x7F&#xff0c;因为有一位…

10.Golang中的map

目录 概述map实践map声明代码 map使用代码 结束 概述 map实践 map声明 代码 package mainimport ("fmt" )func main() {// 声明方式1var map1 map[string]stringif map1 nil {fmt.Println("map1为空")}// 没有分配空间&#xff0c;是不能使用的// map…

Vulnhub-dc6

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-25 14:39 CST Nmap scan report for 192.168.1.1 Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.2…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域&#xff0c;无明细路由&#xff0c;容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中&#xff0c;所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连&#xff0c;不同 level-1 区域之间不能直接…

.NET高级面试指南专题一【委托和事件】

在C#中&#xff0c;委托&#xff08;Delegate&#xff09;和事件&#xff08;Event&#xff09;是两个重要的概念&#xff0c;它们通常用于实现事件驱动编程和回调机制。 委托定义&#xff1a; 委托是一个类&#xff0c;它定义了方法的类型&#xff0c;使得可以将方法当作另一个…

SpringMVC第六天(拦截器)

概念 拦截器(Interceptor)是一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方法的执行 作用&#xff1a; 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 拦截器与过滤器的区别 归属不同&#xff1a;Filter属于Servlet技术&#xff0c;I…

递归方法猴子吃桃问题

public class A {public static void main(String[] args) {System.out.println("第一天有&#xff1a;"f(1)"个");System.out.println("第二天有&#xff1a;"f(2)"个");System.out.println(".....");System.out.println(&…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力&#xff0c;它能够将复杂任务拆分成多个子任务&#xff0c;并利用多核处理器同时执行&#xff0c;从而显著提升计算性能&#xff0c;此外&#xff0c;ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

保姆级教学:Java项目从0到1部署到云服务器

目录 1、明确内容 2、apt 2.1、apt 语法 2.2、常用命令 2.3、更新apt 3、安装JDK17 4、安装MySQL 4.1、安装 4.2、检查版本及安装位置 4.3、初始化MySQL配置⭐ 4.4、检查状态 4.5、配置远程访问⭐ 4.6、登录MySQL 4.7、测试数据库 4.8、设置权限与密码⭐ 5、安…

cmake工具的安装

1、简介 CMake 是一个开源的、跨平台的自动化建构系统。它用配置文件控制编译过程的方式和Unix的make相似&#xff0c;只是CMake并不依赖特定的编译器。CMake并不直接建构出最终的软件&#xff0c;而是产生标准的建构文件&#xff08;如 Unix 的 Makefile 或 Windows Visual C …

GPT 如何不挂VPN使用

1、下载 Home | Tampermonkey 将下载的文件tampermonkey_stable.crx 拖到上面的扩展程序里面 2、登录Greasy Fork - 安全、实用的用户脚本大全 搜索自己想要使用的东西&#xff0c;如GPT 找到 CHAT网页增强了 点击按安装&#xff0c;然后打开使用方法里面的 网址就可以使用

day04 两两交换链表中的节点、删除链表倒数第N个节点、链表相交、环形链表II

题目链接&#xff1a;leetcode24-两两交换链表中的节点, leetcode19-删除链表倒数第N个节点, leetcode160-链表相交, leetcode142-环形链表II 两两交换链表中的节点 基础题没有什么技巧 解题思路见代码注释 时间复杂度: O(n) 空间复杂度: O(1) Go func swapPairs(head *Li…

JavaEE-自定义SSM-编写核心-解析yml文件

3.3.1 加载yml文件 编写yaml工厂&#xff0c;用于加载yml文件 package com.czxy.yaml;import java.io.InputStream;/*** 用于处理 application.yml文件* 1. 加载application.yml文件* 2. yaml工具类进行解析* Map<String, Map<String, Map<....>> >* …

[数据结构]-哈希

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习目标&…