GIT的一些常见指令

87 阅读2分钟

一、回滚代码(git revet  &&  git reset)

现在master分支指向的是“git revert”这个commit,目标:希望将版本回滚到上次“final”的这次commit。

1、git revert

git revert相当于用一次新的commit达到恢复指定commit的目的。

**git revert可以指定恢复某一特定的commit,**比如想恢复commit:C的提交,可以执行以下代码:

git revert C
git commit -m "revert C"

此时,commit链就变为了: A -> B -> C -> D->'revert C'

注意:revert只恢复了C本次的commit,在C后面D的commit并没有发生变化。

演示:(本例想要从git revert 回到final,相当于不要git revert的提交)

git revert b8e6ad58(这个是git revert这次的hash值版本号)

若想要把final、git revert、revert 'git revert' 这三次commit合并成一次commit,更美观,可用如下代码:

git rebase -i HEAD~3    (合并三次commit)

进入vim编辑器进行操作:
p, pick <commit> = use commit
s, squash <commit> = use commit, but meld into previous commit

成功,若此时想把此次final的commit 改个名字,用以下指令:

git commit --amend

2、git reset

现在master分支指向的是“git reset”这个commit,目标:希望将版本回滚到上次“final”的这次commit。

git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本。

(git reset指定一个版本号,则该版本号之后的所有commit全部消失)

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

演示:

git reset b3765e30(直接指定想要回滚到的final的版本号)

此时master分支已经指向了finaal这次commit,而这个uncommitted changes是git reset分支撤销带来的。

git reset后可以接三种参数(--hard、--mixed、--soft)

【1】--hard

会同时重置repository、stage、workspace

【2】--mixed

会重置repository、stage,只保留workspace中的改动

【3】--soft

会重置repository,但保留stage、workspace中的改动

3、git工作区的图例:

  • workspace(工作目录):本地直接编辑的结果
  • stage/index(索引区): workspace 内的内容可暂存到stage中
  • repository(仓库):将当前stage打包起来,作为一次归档,提交到repository中

.