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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化脚本不稳定,原来是软件弹窗惹的祸,2个方法解决!

很多同学在学习 App 自动化或者在项目中落地实践 App 自动化时&#xff0c;会发现编写的自动化脚本无缘无故的执行失败、不稳定。 而导致其问题很大原因是因为应用的各种弹窗&#xff08;升级弹窗、使用过程提示弹窗、评价弹窗等等&#xff09;&#xff0c;比如这样的&#xff…

AP5193 DC-DC宽电压LED降压恒流驱动器 2.5A可PWM/线性调光IC 过EMC认证线路图

产品描述 AP5193是一款PWM工作模式,高效率、外围简 单、 内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度 降压LED恒流驱动芯片。最大电流2.5A。 AP5193可实现线性调光和PWM调光&#xff0c;线性调 光 脚有效电压范围0.55-2.6V. AP5193 工作频率可以通过RT 外部电阻…

dvwa靶场文件上传high

dvwa upload high 第一次尝试&#xff08;查看是否是前端验证&#xff09;第二次尝试我的上传思路最后发现是图片码上传修改配置文件尝试蚁&#x1f5e1;连接菜刀连接 第一次尝试&#xff08;查看是否是前端验证&#xff09; 因为我是初学者&#xff0c;所以无法从代码审计角度…

数仓治理-计算资源治理

注&#xff1a;文章参考: 数据治理实践 | 网易某业务线的计算资源治理从计算资源治理实践出发&#xff0c;带大家清楚认识计算资源治理到底该如何进行&#xff0c;并如何应用到其他项目中https://mp.weixin.qq.com/s/w6d5zhDaaavNhW_DMEkPsQ 目录 一、计算资源治理的背景 二…

qt学习:tcp区分保存多个客户端

在前面文掌的tcp客服端服务端进行更改 qt学习&#xff1a;Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接&#xff0c;就会覆盖掉原来的指针&#xff0…

《WebKit 技术内幕》学习之十五(4):Web前端的未来

4 Cordova项目 Cordova是一个开源项目&#xff0c;能够提供将Web网页打包成本地应用格式的可运行文件。读者可能对Cordova项目陌生&#xff0c;但是大家可能对它的前身非常熟悉&#xff0c;那就是PhoneGap项目&#xff0c;它后来被Adobe公司收购。 图15-4描述了Cordova的主要工…

Lua脚本

Lua脚本 十一、【Lua】11.1.概念11.2.特性11.2.1.轻量级11.2.2.可扩展11.2.3.支持面向过程编程和函数式编程 11.3.应用场景11.4.Lua的安装11.4.1. 点击download可以找到对应版本的下载地址11.4.2. 编译安装11.4.3.如果在执行make linux test失败&#xff0c;报如下错误:11.4.4.…

Redis快的秘密,高性能设计epoll和IO多路复用探究

Redis快的原因&#xff0c;高性能设计epoll和IO多路复用探究 1、多路复用需要解决的问题 并发多客户端连接&#xff0c;在多路复用之前最简单和典型的方案&#xff1a;同步阻塞网络IO模型 这种模式的特点就是用一个进程来处理一个网络连接&#xff08;即一个用户请求&#x…

经典目标检测YOLO系列(三)YOLOV3的复现(1)总体网络架构及前向处理过程

经典目标检测YOLO系列(三)YOLOV3的复现(1)总体网络架构及前向处理过程 和之前实现的YOLOv2一样&#xff0c;根据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;在不脱离YOLOv3的大部分核心理念的前提下&#xff0c;重构一款较新的YOLOv3检测器&#xff0c;来对YOLOv3有…

独占指针:unique_ptr 与 函数调用 笔记

推荐B站视频&#xff1a; 2.unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p2&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 3.unique_ptr与函数调用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p3&vd_sourcea934d…

【MyBatis】#{} 和 ${}

目录 1. #{} 使用示例&#xff1a; 2. ${} 使用示例&#xff1a; SQL注入 使用#{}的情况&#xff1a; 使用${}的情况&#xff1a; MyBatis是一种用于Java语言的持久层框架&#xff0c;它简化了数据库操作的过程。在MyBatis中&#xff0c;我们经常会看到两种不同的参数占…

UDF学习(三)数据访问宏

数据访问宏一 网格节点相关宏** NODE_X (v) 节点v的x方向的坐标 &#xff08;Node *v&#xff09; NODE_Y (v) 节点v的y方向的坐标 &#xff08;Node *v&#xff09; NODE_Z (v) 节点v的z方向的坐标 &#xff08;Node *v&#xff09; F_NODE (f,t,n) 获取节点 (face_t f, Thre…