前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git进阶 | 01-git基础操作进阶

git进阶 | 01-git基础操作进阶

作者头像
Mculover666
发布2022-05-23 09:37:00
4200
发布2022-05-23 09:37:00
举报
文章被收录于专栏:TencentOS-tinyTencentOS-tiny

引言

上次写git入门教程还是2019年(Git & Github学习总结),三年期间使用最多的命令不过三条:

代码语言:javascript
复制
git add -A
git commit -m ""
git push origin master

显然,这只是把git当作一个文件系统照相机来用,每一次git commit都是为了备份,而不是管理。

在经历了一次多人协同的项目之后,我觉得非常有必要沉淀一些东西出来,于是就诞生了写git进阶教程的想法,希望有动力写下去吧~

在工作中经常手足无措的场景如下。

"jack,我改完bug了要提交,卧槽,库上怎么有人提交了?"

“jack,我干活的时候改了一堆文件,怎么去同步一下库上的修改啊?”

"jack,我改了一堆文件,也不能add -A,这咋给它都add进来呀?"

“jack,代码改炸了,怎么回去哇?”

"jack, 手抖了一下,有个文件被一起暂存了,怎么捞出来哇?"

上面这些场景,得亏大佬耐心的都给我解答,学会git stashgit 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使用熟练了之后,可以使用紧凑的输出,更加高效:

代码语言:javascript
复制
git status -s

文件前的状态标识符如下:

  • M :M位置靠左,表示文件在工作区被修改,并放入了暂存区
  • M:M位置靠右,表示文件在工作区被修改,还没有放入暂存区
  • MM:文件在工作区被修改,已经存入了暂存区,但又被工作区修改了
  • A:新添加到暂存区的文件
  • ??:未追踪的文件

4. 文件如何移出暂存区但保留到工作区

在手动git add的时候,难免会有文件被意外加入暂存区,可以使用git reset命令取消暂存(从暂存区捞出来到工作区):

代码语言:javascript
复制
git reset HEAD <file>

5. 如何撤销对文件的修改

在工作区中干活的时候,如果文件改炸了,需要恢复到上次提交/暂存的状态,重新修改,可以使用命令:

代码语言:javascript
复制
git checkout -- <filename>

6. 查看带有文件信息的commit记录

除了常用的pretty参数外,还可以带上每次提交的简略统计信息,可以看到文件变化:

代码语言:javascript
复制
git log --stat

还有一个-<n>选项,可以用来指定查看最近的几次提交,比如只查看最近的两次提交:

代码语言:javascript
复制
git log -2

7. 文件提交漏了如何补提交

当commit完毕之后,如果发现文件提交漏了,但又不想再来一次提交,可以带上--amend参数,合并上次提交:

提交之后会发现,上一次提交已经被覆盖了:

8. git使用别名

每次输入一大堆命令显得很麻烦,可以很常用命令起别名,提高效率。

代码语言:javascript
复制
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全局配置为公司的账户,但这个时候想用自己的账户提交信息,可以通过修改本地仓库的设置来完成:

代码语言:javascript
复制
git config --local user.name mculover666
git config --local user.email "mculover666@qq.com"

这样在本仓库执行git commit时,就会使用该账户信息。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mculover666 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 1. git管理思想
  • 2. git的三个工作区
  • 3. git状态紧凑输出
  • 4. 文件如何移出暂存区但保留到工作区
  • 5. 如何撤销对文件的修改
  • 6. 查看带有文件信息的commit记录
  • 7. 文件提交漏了如何补提交
  • 8. git使用别名
  • 9. 如何使用不同的账户提交
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档