git进阶 | 01 - git基础操作进阶
引言
上次写git入门教程还是2019年(Git & Github学习总结),三年期间使用最多的命令不过三条:
git add -A
git commit -m ""
git push origin master
显然,这只是把git当作一个文件系统照相机来用,每一次git commit都是为了备份,而不是管理。
在经历了一次多人协同的项目之后,我觉得非常有必要沉淀一些东西出来,于是就诞生了写git进阶教程的想法,希望有动力写下去吧~
在工作中经常手足无措的场景如下。
“jack,我改完bug了要提交,卧槽,库上怎么有人提交了?”
“jack,我干活的时候改了一堆文件,怎么去同步一下库上的修改啊?”
“jack,我改了一堆文件,也不能add -A,这咋给它都add进来呀?”
“jack,代码改炸了,怎么回去哇?”
“jack, 手抖了一下,有个文件被一起暂存了,怎么捞出来哇?”
上面这些场景,得亏大佬耐心的都给我解答,学会git stash
、git reset
、--rebase
,就可以很从容优雅的应对了~
作为这个系列第一篇,下面来介绍一些不常用但很有用的git知识。
1. git管理思想
git可以简单粗暴的看做一个文件系统照相机,每次提交时,git会对当前文件进行拍照并保存这个快照的索引。
如果文件有改动,则存储新的快照,如果文件无修改,git不会重新存储该文件,而是直接指向之前存储的文件。
2. git的三个工作区
git有三个工作区:
- git仓库
- 工作目录
- 暂存区域
对应git中文件所处的不同区域,git中管理的文件有三种状态:
- modified:已修改,文件被修改,但还没保存到git仓库
- staged:已暂存,文件被修改,并且保存到了暂存区,方便下次提交
- committed:已提交,文件被修改,将暂存区的修改保存到本地git仓库中
git的三个工作区是git使用和核心知识,如果这个知识点没有弄明白,建议先看基础教程。
3. git状态紧凑输出
正常状态下,使用git status
命令查看当前文件状态,如图:
但是该命令的输出内容会比较多,当git使用熟练了之后,可以使用紧凑的输出,更加高效:
git status -s
文件前的状态标识符如下:
M
:M位置靠左,表示文件在工作区被修改,并放入了暂存区M
:M位置靠右,表示文件在工作区被修改,还没有放入暂存区MM
:文件在工作区被修改,已经存入了暂存区,但又被工作区修改了A
:新添加到暂存区的文件??
:未追踪的文件
4. 文件如何移出暂存区但保留到工作区
在手动git add
的时候,难免会有文件被意外加入暂存区,可以使用git reset命令取消暂存(从暂存区捞出来到工作区):
git reset HEAD <file>
5. 如何撤销对文件的修改
在工作区中干活的时候,如果文件改炸了,需要恢复到上次提交/暂存的状态,重新修改,可以使用命令:
git checkout -- <filename>
6. 查看带有文件信息的commit记录
除了常用的pretty参数外,还可以带上每次提交的简略统计信息,可以看到文件变化:
git log --stat
还有一个-<n>
选项,可以用来指定查看最近的几次提交,比如只查看最近的两次提交:
git log -2
7. 文件提交漏了如何补提交
当commit完毕之后,如果发现文件提交漏了,但又不想再来一次提交,可以带上--amend
参数,合并上次提交:
提交之后会发现,上一次提交已经被覆盖了:
8. git使用别名
每次输入一大堆命令显得很麻烦,可以很常用命令起别名,提高效率。
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
设置完别名之后,只需要使用co、br、ci、st即可代替原有命令。
9. 如何使用不同的账户提交
在公司使用时,git全局配置为公司的账户,但这个时候想用自己的账户提交信息,可以通过修改本地仓库的设置来完成:
git config --local user.name mculover666
git config --local user.email "mculover666@qq.com"
这样在本仓库执行git commit时,就会使用该账户信息。
git进阶 | 01 - git基础操作进阶相关推荐
- git的安装与基础操作
Git简介 git是什么? Git 是目前世界上最先进的分布式版本控制系统(没有之一). 什么又是版本控制系统? 举个例子: 如果你用 Microsoft Word 写过长篇大论,那你一定有这样的经历 ...
- Git相关的一些基础操作与命令
Git的基础命令 我对分支合并的一些整理 Git远程仓库相关命令 Git有关版本的一些操作 git branch查看本地所有分支git status 查看当前状态git commit提交git com ...
- mysql进阶教程pdf_Mysql基础到进阶精品视频教程附讲义文档 91课
Mysql基础到进阶精品视频教程附讲义文档 91课 程介绍 Mysql基础 本章主要是php开发中Mysql基础知识的学习,包括MySQL的简单介绍和安装.MySQL管理工具的使用.表的建立.数据的查 ...
- ElasticSearch[01]ElasticSearch基础操作
ElasticSearch版本:7.8.1 测试工具:Postman.ElasticSearch Head 参考视频:[尚硅谷]ElasticSearch教程入门到精通(基于ELK技术栈elastic ...
- python字符串字面量有哪四种定义方式_Python进阶16_字符串基础操作
前面介绍了一下比较晦涩而且深入的字符文本的处理方法,接下来几节将带来一些常规的操作.比较容易入手. 字符串处理 字符串字面量 字符字面量的通过使用:以单引号开始和结束,但是如何处理的是字符串内使用单引 ...
- Linux docker(01) 基础操作
该系列文章的目的旨在docker的基础学习和docker的实战应用. 0 why docker 在这之前我们需要了解为啥要使用docker这个东东?简单来说: 这玩意儿根虚拟机功能差不多,但比虚拟机快 ...
- UE5学习笔记01(基础操作一)
1.Editor播放状态下,Shift + F1可以显示鼠标. 2.Viewport内,鼠标左键上下拖拽是基于自身坐标前后移动视角,左右移动是左右环视:鼠标中键上下左右拖拽是基于自身坐标上下左右移动视 ...
- UE5学习笔记01(基础操作二)
1.Outliner被翻译成"大纲". 2.当按住Shift键移动一个物体时,摄像机会追随被移动的物体,形成一种第三人称视角的感觉. 3.在Outliner中选择一个或者多个物体之 ...
- 【04】进阶:Git系统中的分支操作与管理
总第95篇 接上篇,本篇文章将详细梳理Git系统分支相关的操作,包括分支的新建与合并.分支的管理及变基等.Git的分支模型非常轻量型,你可以非常方便地创建分支以及在不同的分支间切换.可以说,Git的分 ...
最新文章
- 从 ACM 训练领悟坚持之道
- tomcat用80port能够启动,可是浏览器不显示tomcat首页
- java: jstl.jar和standard.jar的下载地址与使用
- airpods pro是按压还是触摸_AirPods 与 AirPods Pro 哪个好?如何正确选购华强北版本...
- 【RK3399Pro学习笔记】九、ROS客户端Client的编程实现
- 利用spi发送接收信息c语言,SPI接收发送函数程序
- a标签position为absolute时,IE无法点击(a position:absolute bug ie)
- php调用谷歌翻译,PHP调用谷歌翻译 | 学步园
- List 列表中的对象在循环中的声明问题
- 惠普企业级服务器型号,惠普企业级服务器HP rx8640
- Proe调入ansys中单位的协调
- sis forum index.php,SiS001 获取当前服务器的Ip地址
- php 调用qq接口,PHP调用QQ互联接口实现QQ登录网站功能示例
- 冯诺依曼体系结构_存算一体:突破冯诺依曼架构瓶颈的希望?
- css图片九宫格布局
- linux lxde桌面快捷键,LXde 桌面有两下啊
- Photoshop入门教程:画笔工具轻松打造轻纱效果
- 我设计开发的第一个产品发布了,微信小程序“集美装修效果图“
- ClickOnce介绍
- Modbus对接 - Java
热门文章
- 2019.04流量副卡方案对比 - (日租卡类)月租在20元以下的
- DllPlugin动态链接库插件
- MacOS Big Sur Beta 测评|使用体验|有哪些BUG?|如何安装?|实际体验如何?|WWDC2020
- matlab 雷电,利用MATLAB实现对雷电监测数据的分析和绘图
- 【解惑】女生适合干计算机什么方面的工作
- EDI助力物流行业整合供应链
- 解决Windows缺少MSCOMCTL.OCX文件无法运行程序问题
- 正则表达式——同时验证座机号和手机号
- 微信外部浏览器支付遇到:支付场景非法、appid 未关联paysignkey、商户支付下单id非法 等问题
- Application.DoEvents();