Git基本操作

文章目录

  • status
  • add
  • commit
  • diff
  • reset
  • restore

前言

本文通过操作演示,使得第一次接触git的朋友,能够熟悉git的基本操作

1.status

功能:Show the working tree status;主要显示工作区的状态,比如文件有没有被git跟踪;文件有没有更新;有没有添加到暂存区;有没有提交到本地仓库

2.add

git-add - Add file contents to the index
功能:添加文件内容到暂存区
实例1:创建一个文件add_study.c文件,输入内容“//study add cmd”

 从上图可以看到未添加到暂存区的文件add_study.c是红色的,执行add . 命令后详见下图可以看到add_study.c已经添加到暂存区了,其有红色变成绿色了。

注:一般使用git add .就会将本地已经修改文件添加到暂存区;如果只是想添加有限个文件到暂存区可以使用类似git add file1 file2方法,就可以将file1 file2添加到暂存区。

总结:通过上述操作,可以看到通过add命令可以将本地修改文件添加到暂存区。

3.commit

功能:Record changes to the repository;暂存区修改内容提交到本地仓库通过上述命令git commit -m 可以实现将暂存区文件提交到本地仓库,通过git log可以查看到提交日志

4.diff

功能:Show changes between commits, commit and working tree, etc; 显示提交记录之间的差异;显示提交和暂存区之间的差异;显示暂存区和工作区间的差异

   (1)显示暂存区和工作区间的差异

   Git  diff  [file]

版本库已经存在diff_study.c文件,其中增加内容“1:test work area and stage diff”,但是不添加到暂存区。执行git diff之后显示结果如下图,其显示出了修改前后的差异,下面对git diff之后的输出做下说明:

   第一行:表明为git格式的diff,表明a,b两个版本下文件的差异

   第二行:标明a和b两个版本的哈希值;100644标示文件权限

   第三,四行:分别表示文件修改前后的版本;---表示修改前的版本,++表示修改后的版本

   第五行:-1,表示修改前的内容起始行号为1,一共一行

                 +1,3,表示修改后的内容起起始行号为1,一共连续3行

  第六行:修改前的内容一共一行

  第七行:忽略

   第八,九,十行:修改后的内容一共三行

总结:通过该命令可以查看,工作区和暂存区内容差异,并且显示出文件差异部分,并给出行号。

(2) 显示暂存区和上次提交的差异

  git diff --staged [file]

  继上一次操作后,执行该命令发现此时没有任何差异,原因是没有添加到暂存区。

下面提交后,再执行该命令后,会发现暂存区和上一次提交存在差异,差异部分和前面的一样。

(3)显示两次提交的差异

   git diff [first-commit_id]...[second-commit_id]

   通过git log查看最后两次提交的commit id,然后通过该命令查看差异,结果见下图

 

5.reset

功能:Reset current HEAD to the specified state; head指针指向指定的地方

语法:git reset [--soft | --mixed | --hard] [commit id]  

应用场景:本地开发中,发现已经提交的内容有错(或想丢弃),此时可以通过该命令将上述内容移除;出错的位置可能在本地仓库,可能在暂存区,可能在工作区,所以git语法提供了上述语法来解决。

  验证环境准备:首先创建reset_test.txt,并进行了三次提交,”forth commit//添加到缓存区”只是被添加到缓存区,还没提交,“forth commit1//在工作区,未添加到暂存区”在工作区,未添加到暂存区详见下图

(1)--soft 本地仓库区的内容和commit id中仓库内容一致,暂存区和工作区中内容保持不变;原节点和reset节点之间的差异集合会(即原来的commit提交)放入暂存区中。

应用场景:本地开发中在保证内容不丢失的情况下,实现commit的合并。

通过下图的方法来验证这个case,步骤(1)可以发现工作区中内容没有发生变化;步骤(2)发现此时头结点指向的是第2次提交,说明和reset -- soft的预期基本是一致的,但是还没有证明暂存区内容不变。

通过步骤3,git checkout . 表示暂存区内容恢复到工作区,通过反馈发现此时暂存区和工作区内容是一致的,“forth commit1//在工作区,未添加到暂存区”丢失了。

 最后对当前内容重新提交一到本地,通过下图可以看到third commit的提交记录就不见了,看到新的提交变成最后一次的提交。

(2)--mixed,reset后不带参数的话,默认就是这个指令,会将暂存区,本地仓库区的内容和commit id中仓库内容一致,工作区内容保持不变,但是原节点和reset节点之间的差异集合会(即原来的commit提交)会放到工作区中。

 应用场景:假设代码提交了3次,第1,3次提交有问题,第2次提交有误,所以通过这个选项可以统一将之前commit的代码回退到工作区,进行统一处理,修复完毕后,经过add后再提交即可。

  示例:略

(3)--hard,这个指令处理的很彻底,会将工作区,暂存区,本地仓库区的内容和commit id中仓库内容一致;原节点和reset节点之间的差异集合会(即原来的commit提交)会丢失,工作区中的内容也会丢失。

  示例:略

 6.restore

  功能:Restore working tree files;恢复工作区中的文件

 应用场景:工作区中的文件恢复;暂存区中的文恢复;工作区和暂存区中的文件恢复

(1)工作区中的文件恢复(从暂存区恢复到工作区) git  restore  --worktree  <file>(和git  restore  <file>等价)

(2)暂存区中的文件恢复(从版本库恢复到暂存区,工作区中内容保持不变)

git  restore  --worktree  <file>

 (3)从某个提交节点中恢复暂存区和工作区中内容

  git restore --source=HEAD --staged --worktree <file>

   

总结

通过本文基本可以实现项目中git的基本操作了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值