(2)Git中的add和版本回退

本文深入解析了Git中常用的命令,特别是git add的各种用法及其区别,包括如何提交新增、修改和删除的文件,并通过实际案例进行了演示。此外,还介绍了git reset和git revert的使用方法。

git add

在使用git init初始化一个repository之后,需要使用git add filename来使得repository内的文件被tracked,上面的命令只适合于单个文件被添加的情况,如果我们有多个文件被添加的时候,我们会使用一些参数,见下表。

命令效果
git add .提交新增文件和修改文件,不包括被删除文件
git add -u提交被删除文件和被修改文件,不包括新增文件
git add -A提交全部修改,即上两条指令的并集

下面详细讲述一下不同参数的区别。

git add .

这条命令只提交新增文件修改文件,不包括删除文件。原因是它他监控的是工作区的状态树,它会把工作区存在的文件变化提交到暂存区,相当于对工作区的每一个变化文件使用 git add 命令,所以对于在工作区删除文件但是该文件已经进入暂存区,git add操作并不会对它在暂存区产生任何影响。

git add -u(--update)

这条命令只提交删除文件修改文件,不包括新增文件。原因是这条指令只对存在于暂存区的文件(tracked file)进行操作,监控暂存区文件的任何变化,包括删除和修改,但是对于工作区新增加的文件,由于还没有添加到暂存区,因此不会对新增文件产生任何影响。

git add -A(--all)

这条指令会对任何操作进行提交,相当与是前两条指令的并集。

实例

git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial

echo OK >> change-me
rm delete-me
echo Add me > add-me

git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git add .
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me

git reset

git add -u
git status

# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me

git reset

git add -A
git status

# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

这个例子中还涉及了一个命令git reset,下面来详解讲解一下该命令和与它相关的git reverse命令

git reset

这一个版本回退命令,恢复到之前的某个版本,且在那个版本之后的提交都会删除
在这里插入图片描述
在这里插入图片描述

使用方式

  1. 使用git log查看要回退的版本号。
  2. 使用git reset --hard 目标版本号回退到指定版本。
  3. 使用git push -f上传到远程库(因为本地的版本比远程库的版本要老,因此需要使用-f参数强制推送)。

git revert

除了上述方法外,git revert命令也可以进行版本回退,但是二者的原理不同。git revert提交一个新的版本,将需要revert的版本的内容再反向修改回去,相当于一次逆向的commit。
在这里插入图片描述

使用方法

  1. 使用git log查看要回退的版本的前一个版本号。
  2. 使用git revert -n 目标版本的前一个版本的完整的版本号
    可能会有代码冲突,需要手动修改冲突。
  3. 使用git commit -m "说明"
    由于是新增加的一个版本,因此需要新的commit。
  4. 使用git push推送到远程仓库。

参考文章

[1] https://www.cnblogs.com/skura23/p/5859243.html
[2] https://blog.youkuaiyun.com/yxlshk/article/details/79944535
[3] https://www.cnblogs.com/0616--ataozhijia/p/3709917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值