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

目录

  • git add
    • git add .
    • git add -u(\-\-update)
    • git add -A(\-\-all)
    • 实例
  • 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

这一个版本回退命令,恢复到之前的某个版本,且在那个版本之后的提交都会删除
(2)Git中的add和版本回退_第1张图片
(2)Git中的add和版本回退_第2张图片

使用方式

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

git revert

除了上述方法外,git revert命令也可以进行版本回退,但是二者的原理不同。git revert提交一个新的版本,将需要revert的版本的内容再反向修改回去,相当于一次逆向的commit。
(2)Git中的add和版本回退_第3张图片

使用方法

  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.csdn.net/yxlshk/article/details/79944535
[3] https://www.cnblogs.com/0616--ataozhijia/p/3709917.html

你可能感兴趣的:(git)