Git常用命令备忘

Git常用命令备忘

Git已经成为程序员日常工具之一,那些Git基本的命令,每天都要用得命令你都记住了吗?如果还没的话,笔者整理了一份清单,以备不时之需所用。

####三个基本概念

  1. 工作区(Workspace)是计算机中项目的根目录
  2. 暂存区(Index)像个缓存区域,临时保存你的改动
  3. 版本库(Repository)分为本地仓库(Local)和远程仓库(Remote)

几乎所有常用命令就是围绕这几个概念来操作的,一图胜千言,下面是一张比较简单的图,包括了最基本的命令

simple

但只会使用以上命令是不够的,在这个复杂纷繁的程序世界,事情没你想的那么简单,不过有些事情想想就够了,不一定要去做,真要去做你也做不来,比如自己写个git来,但是,更多地的了解git是我们每个程序员都可以做得到的事。

下面的命令结合上面两张图来理解、练习、记忆效果更加。暂时用不着的命令记不住,不理解也没关系,哪天遇到问题,再来找找有没有合适的方法也不迟。

####新建/克隆代码库

$ git init                                          #当前目录新建一个Git代码库$ git init [project-name]						     #新建一个目录,将其初始化为Git代码库$ git clone [url]								     #下载一个项目和它的整个代码历史$ git fetch [url]									 #下载/同步项目到

####添加/删除文件

$ git add [file1] [file2] ...   					# 添加指定文件到暂存区$ git add [dir] 									# 添加指定目录到暂存区,包括子目录$ git add .   										# 添加当前目录的所有文件到暂存区$ git rm [file1] [file2] ...   					# 删除工作区文件,并且将这次删除放入暂存区$ git rm --cached [file]   						# 停止追踪指定文件,但该文件会保留在工作区$ git mv [file-original] [file-renamed]  			# 改名文件,并且将这个改名放入暂存区

####代码提交

$ git commit -m [message]  						# 提交暂存区所有文件到仓库区,并指定提交说明$ git commit [file1] [file2] ... -m [message]   	# 提交暂存区的指定文件到仓库区,并指定提交说明$ git commit -a   # 提交工作区自上次commit之后的变化,直接到仓库区。是git add 和 git commit的组合操作$ git commit -v  									# 提交时显示所有diff信息$ git commit --amend -m [message]   				# 使用一次新的commit,替代上一次提交

####分支

$ git branch   									# 列出所有本地分支$ git branch -r									# 列出所有远程分支$ git branch -a 									# 列出所有本地分支和远程分支$ git branch [branch-name]  						# 新建一个分支,但依然停留在当前分支$ git checkout -b [branch]  						# 新建一个分支,并切换到该分支$ git branch [branch] [commit]  					# 新建一个分支,指向指定commit$ git checkout [branch-name]  						# 切换到指定分支$ git merge [branch]  								# 合并指定分支到当前分支$ git branch -d [branch-name]  					# 删除本地分支$ git push origin --delete [branch-name]  			# 方法一:删除远程分支
$ git branch -dr [remote/branch]          			# 方法二:删除远程分支

####撤销

$ git checkout [file]   							# 恢复暂存区的指定文件到工作区(注意区别分支操作中得checkout命令)$ git checkout [commit] [file]  					# 恢复某个commit的指定文件到暂存区和工作区$ git checkout .   								# 恢复暂存区的所有文件到工作区$ git reset [file]  								# 重置暂存区的指定文件,与最新的commit保持一致,但工作区不变$ git reset --hard    								# 重置暂存区与工作区,与最新的commit保持一致$ git reset [commit]   							# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset --hard [commit]  						# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致$ git reset --keep [commit]   						# 重置当前HEAD为指定commit,但保持暂存区和工作区不变$ git revert [commit]  							# 新建一个commit,用来撤销指定commit

####标签

$ git tag  										# 列出所有tag$ git tag [tag] 									# 在当前commit新建一个tag$ git tag [tag] [commit] 							# 在指定commit新建一个tag$ git tag -d [tag]   								# 删除本地tag$ git push origin :refs/tags/[tagName]  			# 删除远程tag$ git show [tag]  									# 查看tag信息$ git push [remote] [tag]  						# 提交指定tag$ git push [remote] --tags  						# 提交所有tag$ git checkout -b [branch] [tag]   				# 新建一个分支,指向某个tag

####查看日志

$ git status 									# 显示所有变更文件$ git log  										# 显示当前分支的版本历史$ git log --stat 								# 显示当前分支的版本历史,以及发生变更的文件$ git blame [file]								# 显示指定文件是什么人在什么时间修改过$ git log -p [file]								# 显示指定文件相关的每一次diff$ git diff     									# 显示暂存区和工作区的差异$ git diff --cached [commit]					# 显示暂存区和某个commit的差异$ git diff HEAD 								# 显示工作区与当前分支最新commit之间的差异$ git show [commit]								# 显示某次提交的元数据和内容变化$ git show --name-only [commit]					# 显示某次提交发生变化的文件$ git show [commit]:[filename]					# 显示某次提交时,某个文件的内容$ git reflog									# 显示当前分支的最近几次提交

####远程同步

$ git fetch [remote]							# 下载远程仓库的所有变动到暂存区$ git remote -v 								# 显示所有远程仓库$ git remote show [remote]						# 显示某个远程仓库的信息$ git remote add [shortname] [url]				# 增加一个新的远程仓库,并命名$ git pull [remote] [branch]					# 取回远程仓库的变化,并与本地分支合并$ git push [remote] [branch]					# 上传本地指定分支到远程仓库$ git push [remote] --force						# 即使有冲突,强行推送当前分支到远程仓库$ git push [remote] --all						# 推送所有分支到远程仓库

####设置
git的配置文件是.gitconfig,支持全局配置和项目配置,全部配置对所有项目有效,用 --global选择指定。

$ git config --list                                  #显示配置$ git config -e [--global]  						 #编辑(全局)配置文件$ git config [--global] user.name "xx"               #设置 commit 的用户$ git config [--global] user.email "xx@xx.com"       #设置 commit 的邮箱

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

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

相关文章

熬夜后补救措施

人体的肝功能问题 直接体现在体态和容颜上 伤肝 三大坏行为 熬夜后补救 *补充养b族、口、、锌、硒 加强代谢 能力 (1)另外熬夜后一定要多喝水 提升身体代谢能力 (2)谷肤甘肽清肝 肝脏排毒,减轻负拒 (3)水飞前含量高点 (4)熬夜出更多油 容易长痘 需要清…

springboot项目--后端问题记录

springboot项目后端记录 前言一、包1. lombok--自动生成勾子方法作用依赖使用 2. Validated--自动校验作用依赖使用一般参数校验实体参数校验 结论 3. JWT(json web taken) 令牌生成什么是takenJWT包依赖使用获取taken校验 封装的工具类使用 二、处理技巧1. 全局异常处理作用代…

JDBC详细知识点和操作

javaweb的作用,属于中间者,负责逻辑处理 这三部分互相协作组成了网页 javaweb也就是这三部分 一.数据库部分(略) 二.javaweb程序 1.JDBC 概念:通过java代码操作数据库 数据库种类有很多,比如Oracle&a…

C高级编程 第十六天(树 二叉树)

1.树 1.1结构特点 非线性结构,有一个直接前驱,但可能有多个直接后继有递归性,树中还有树可以为空,即节点个数为零 1.2相关术语 根:即根结点,没有前驱叶子:即终端结点,没有后继森…

6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)

目录 一.堆(Heap)的基本介绍 二.堆的常用操作(以小根堆为例) 三.实现代码 3.1 堆结构定义 3.2 向下调整算法* 3.3 初始化堆* 3.4 销毁堆 3.4 向上调整算法* 3.5 插入数据 3.6 删除数据 3.7 返回堆顶数据 四.下篇内容 1.堆排序 2.TopK问题 一…

LeetCode第414场周赛(第一题)

目录 一:题目:3280. 将日期转换为二进制表示 一:题目:3280. 将日期转换为二进制表示 给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。 date 可以重写为二进制表示,只需要将年…

一款免费开源功能丰富的看图软件NeeView

NeeView 是一款功能丰富的图像查看软件,它以其独特的浏览体验和广泛的支持格式受到用户的欢迎。NeeView 不仅可以浏览普通的图像文件,还能够查看压缩包内的图片、预览PDF文档甚至播放视频文件。 NeeView 的主要特点: 多格式支持&#xff1a…

高频知识总结 | 算法题如何刷?我的高效刷题方法

1. 前言 所以本文章主要就是详细的告诉大家我的刷题方法论,可以做一个参考,如果你觉得我的分享对你有帮助,希望多多点赞收藏评论转发支持! 2. 算法题到底该怎么刷? 回答这个问题只需要两个点:一是刷什么…

JavaWeb笔记整理13——Mybatis

目录 Mybatis介绍 删除 预编译SQL SQL注入 新增 更新 查询 数据封装 条件查询 XML映射文件 动态SQL 更新案例 foreach Mybatis介绍 删除 预编译SQL SQL注入 新增 更新 查询 数据封装 条件查询 XML映射文件 动态SQL <if> 更新案例<set> foreach &l…

AIGC简化文件管理:Python自动重命名Word和PDF文件

1.背景 大家应该也有遇到&#xff0c;自己电脑有很多文件命名不合理的文件&#xff0c;比如&#xff1a;文件1、想法3 &#xff0c;当你长时间再看到这个文件的时候&#xff0c;已经很难知道文件内容。 今天我们将借助AIGC的编码能力&#xff0c;帮我们生成一个批量改文件名的…

Linux内核编程(十五)网络设备驱动

本文目录 一、常见的网络协议二、网络模型二、网络数据的封装和解封装二、抓包工具wireshark三、传输介质四、RJ-45接口1. 百兆网口2. 千兆网口 五、PHY芯片1. 网络变压器的作用2. PHY芯片类型判断 六、MAC控制器七、MAC控制器与PHY芯片连接方式1. MII接口方式&#xff08;百兆…

CSS学习13--学成网例子

CSS例子 学成网 需要使用的图片&#xff1a; 代码&#xff1a; <html><head><style>/*CSS初始化*/* { /*清除内外边框*/padding: 0;margin: 0;}ul {list-style: none; /*清除列表样式*/}.clearfix:before,.clearfix:after { /*清除浮动*/content: &qu…

【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统

文章目录 一、系统架构1、后端&#xff1a;SpringBoot、Mybatis2、前端&#xff1a;Vue、ElementUI4、小程序&#xff1a;uniapp3、数据库&#xff1a;MySQL 二、系统功能三、系统展示1、小程序2、后台管理系统 一、系统架构 1、后端&#xff1a;SpringBoot、Mybatis 2、前端…

计算机毕业设计SpringBoot+VUE自动灌装生产线 MES 系统设计

采用 B/S 架构&#xff0c;MES 应用软件通过 TCP/IP 协议与自动灌装生产线上的各个工作单元中的 PLC 控制器进行通信&#xff0c;查询或采集由 PLC 控制器采集的生产数据。通过 JAVA 构建的平台与数据库进行连接&#xff0c;实现灌装生产线的生产管理、订单管理、质量管理和数据…

问题: java.sql.SQLException:The server time zone value ‘�й���׼ʱ��‘

原文: Mybatis PlusThe server time zone valuehis unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to uti…

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中&#xff0c; "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时&#xff0c;经常听到第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;以及 BCNF&#xff08;Boyce-…

C++操作符重载实例(独立函数)

C操作符重载实例&#xff0c;我们把坐标值CVector的加法进行重载&#xff0c;计算c3c1c2时&#xff0c;也就是计算x3x1x2&#xff0c;y3y1y2&#xff0c;今天我们以独立函数的方式重载操作符&#xff08;加号&#xff09;&#xff0c;以下是C代码&#xff1a; c1802.cpp源代码…

c++进阶——哈希表

嗨喽大家好呀&#xff0c;今天阿鑫给大家带来的是c进阶——哈希表&#xff0c;好久不见啦&#xff0c;下面让我们进入本节博客的内容吧&#xff01; c进阶——哈希表 枚举的介绍unordered系列的底层结构哈希表的改造 哈希是一种思想(映射)&#xff0c;哈希表(值和存储位置建立…

搭建Docker私有仓库管理本地的Docker镜像,通过harbor实现Web UI访问和管理私有仓库

要在本地搭建一个Docker私有仓库&#xff0c;你可以按照以下步骤进行设置&#xff1a; 安装Docker 确保你已经安装了Docker。如果还没有安装&#xff0c;可以按照官方指南进行安装&#xff1a; 对于Ubuntu系统&#xff0c;你可以运行以下命令来安装Docker&#xff1a; sudo ap…

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat 四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意&#xff1a;strlen()函数的返回值是size_t&#xff0c;两个size_t相减仍为无符号数 int main() {char arr[10] "abc";char brr[10] "abc123&quo…