GIT使用,看它就够了

news2024/11/17 13:34:45

一、目的

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嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。

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

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

相关文章

腾讯云4核16G幻兽帕鲁服务器多少钱?

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

机器学习和可视化还能一起这样用?Python教你全搞定

今天这篇推文&#xff0c;我们继续空间数据可视化的最后一个系列-类别插值(categorical-spatial-interpolation) 可视化绘制的推文教程&#xff0c;这期我们使用Python进行绘制&#xff0c;涉及的知识点如下&#xff1a; sklearn.KNeighborsClassifier()机器学习应用 plotnine…

4JS表达式和运算符expression and operator

表达式&#xff08;expression&#xff09;JavaScript中的一个短语&#xff0c;JavaScript解释器会将其计算&#xff08;evaluate&#xff09;出一个结果。程序中的常量是最简单的一类表达式。变量名也是一种简单的表达式&#xff0c;它的值就是赋值给变量的值。复杂表达式是由…

【第二天】蓝桥杯备战

题 1、星期一2、顺子日期3、修剪灌木4、最少砝码 1、星期一 https://www.lanqiao.cn/problems/611/learning/ 解法&#xff1a;星期一的天数总共的天数/7 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void ma…

AutoGen实战应用(二):多代理协作(Multi-Agent Collaboration)

AutoGen是微软推出的一个全新工具&#xff0c;它用来帮助开发者创建基于大语言模型(LLM)的复杂应用程序. AutoGen能让LLM在复杂工作流程启用多个角色代理来共同协作完成人类提出的任务。在我之前的一篇博客: AutoGen实战应用(一)&#xff1a;代码生成、执行和调试 中我们通过一…

Web3:B站chainlink课程Lesson5遇到的小坑汇总

ethers代码 我用的ethers.js 6 &#xff0c;和视频里一样用的是5的不用看代码部分 ethers.providers.JsonRpcProvider("server") //无了 ethers.JsonRpcProvider("server") //现在的wallet.getTransactionCount() //无了 wallet.getNonce() //现在的Big…

springboot的actuator

1、actuator简介 微服务的特点决定了功能模块的部署是分布式的&#xff0c;大部分功能模块都是运行在不同的机器上&#xff0c;彼此通过服务调用进行交互&#xff0c;前后台的业务流会经过很多个微服务的处理和传递&#xff0c;出现了异常如何快速定位是哪个环节出现了问题&am…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型、视觉语言导航

专属领域论文订阅 关注{晓理紫|小李子}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 分类: 大语言模型LLM视觉模型VLM扩散模型视觉…

字符串相关函数【超详细】(strcpy,strstr等string.h中的函数)

文章目录 strlen库中函数定义函数作用函数大概“工作”流程函数使用注意&#xff08;要求&#xff09;函数使用例举 strcpy库中函数定义函数作用函数使用注意&#xff08;要求&#xff09;函数大概“工作”流程函数使用例举 strcat库中函数定义函数作用函数使用注意&#xff08…

【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]

阅读导航 引言一、特殊类 --- 不能被拷贝的类1. C98方式&#xff1a;2. C11方式&#xff1a; 二、特殊类 --- 只能在堆上创建对象的类三、特殊类 --- 只能在栈上创建对象的类四、特殊类 --- 不能被继承的类1. C98方式2. C11方法 总结温馨提示 引言 在面向对象编程中&#xff0…

【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

kubeadm部署k8s1.27.2版本高可用集群(外部etcd集群带TLS认证)

文章目录 环境软件版本服务器系统初始化etcd 证书生成etcd集群部署负载均衡器部署部署k8s集群部署网络组件FAQ 环境 控制平面节点主机的配置最少是2C2G,否则kubeadm init的时候会报错 主机名IP组件系统os128192.168.177.128etcd、kubeadm、kube-apiserver、kube-controller-m…

Vue3 pinia全解(上)

pinia是什么&#xff1f; 如果你学过Vue2&#xff0c;那么你一定使用过Vuex。我们都知道Vuex在Vue2中主要充当状态管理的角色&#xff0c;所谓状态管理&#xff0c;简单来说就是一个存储数据的地方&#xff0c;存放在Vuex中的数据在各个组件中都能访问到&#xff0c;它是Vue生…

【学术论文写作 笔记02】 鲁棒性实验写作的行文逻辑

文章目录 一、声明二、行文思路三、示例范文一范文二 一、声明 自己总结的&#xff0c;有问题望指正&#xff01; 二、行文思路 为什么要做鲁棒性测试怎么做实验结论对结果的解释 三、示例 PPT 范文一 2022, TIM, “A Robust and Reliable Point Cloud Recognition Netw…

Java零基础学习22:static关键字

编写博客目的&#xff1a;本系列博客均根据B站黑马程序员系列视频学习和编写目的在于记录自己的学习点滴&#xff0c;方便后续回忆和查找相关知识点&#xff0c;不足之处恳请各位有缘的朋友指正。 一、static的初步应用场景 我们开始时不使用static直接用public赋值&#xff…

租户认证系统中心设计与实践

租⼾认证中⼼设计、需求背景 1. 由于客⼾&#xff0c;租⼾之间缺乏严肃的关系&#xff0c;导致从经营⻆度看不清客⼾对于公司产品的真实使⽤情况&#xff0c;对于客⼾运营也造成⼀定影响。 2. 在各个业务产品中实际存在⼀些客⼾需要完善⾃⾝资料的场景&#xff0c;但这些场景收…

上位机图像处理和嵌入式模块部署(c/c++ opencv)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 opencv可以运行在多个平台上面&#xff0c;当然windows平台也不意外。目前来说&#xff0c;opencv使用已经非常方便了&#xff0c;如果不想自己编译…

ANSYS 2023 下载安装教程,附安装包和工具,轻松安装,无套路

前言 ANSYS是一款融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析(FEA)软件&#xff0c;能与多数计算机辅助设计软件接口&#xff0c;实现数据的共享和交换&#xff0c;如Creo,NASTRAN、Algor、IDEAS、AutoCAD等. 准备工作 1、Win10及以上系统 2、提前准备好…

Keepalived 深度解析:高可用性的精髓及实践指南

Keepalived 深度解析&#xff1a;高可用性的精髓及实践指南 Keepalived 深度解析&#xff1a;高可用性的精髓及实践指南Keepalived 的工作原理1. VRRP 协议概述2. Keepalived 的角色3. VRRP 协议详解 Keepalived 的使用指南1. 安装 Keepalived使用 Yum 安装本地安装方式 2. 配置…

电商系统设计到开发03 引入Kafka异步削峰

一、前言 系统设计&#xff1a;电商系统设计到开发01 第一版设计到编码-CSDN博客 接着上篇文章&#xff1a;电商系统设计到开发02 单机性能压测-CSDN博客 本篇为大制作&#xff0c;内容有点多&#xff0c;也比较干货&#xff0c;希望可以耐心看看 已经开发的代码&#xff0…