今天是小明来公司实习的第一天,大家都知道新人吗?肯定希望自己多干点活,这样才能在公司里混的下去,所以一上班,小明就斗志满满的打开VsCode新建了一个文件夹 。
小明首先通过git init
这个命令 来初始化;接着小明新建了五个文件夹;
小明看到自己建好的文件,他非常高兴,他首先把自己建好的五个文件通过git add
和git commit -m ""
来把文件一个一个添加好
小明是一个一个的添加上去的,在这里还有一个命令可以一次性添加所有那就是git add . (这个点就是代表选中所有进行提交)
接着小明在终端命令窗口输入了
git log --oneline
来查看他的提交记录
小明查看完之后,他就开始洋洋洒洒的开始写代码了,大家都知道写代码肯定会有bug,此时的小明当他写了几天,他发现自己的代码有很多bug,于是他就想着趁自己的领导没有发现之前赶紧把自己的代码给删了。
于是小明做了一件事那就是让代码回滚
git reset --hard d970340
(因为在小明实在feature2开始接手公司的项目,所以他就让代码回滚到feature2)。注意:如果你想回到那个文件,你就直接指向这个文件的前面的地址编号。小明看到一切都回到最开始的位置,他心里说了一句:好险,幸好git可以让我重头再来,于是他又重新建立一个文件feature6,重复了之前的添加,查看的操作
小明正要重新动手大干一番的时候,他发现自己把大佬在文件里面写的东西也删了,大家都知道一般通过命令删除的东西很难找回,但是git就不同,它可以,于是小明在终端命令窗口输入
git reflog
查看所有的分支记录,包括删除的(下面就是在终端命令窗口输入这个命令显示出来的结果)
接着小明在命令窗口输入
git reset --hard 2c85128
一下就恢复到重置之前的操作,大家可以看到feature3,4,5都恢复回来,这就是git的起死回生的,但是它不仅仅可以起死回生,他可以服从你的命令。
小明把删除的文件找回来了,他还不满意,因为他发现之前删除的是被恢复了,但是后面新建额feature6却不见了,他想要之前的文件在,后面新建的feature6也在。于是小明在命令窗口输入
git cherry-pick
可以理解为我们想要提交的那部分,使用 git cherry-pick
可以让你想要提交的那部分合并到当前分支上
git cherry-pick 77c5d11
(后面的数字就是前面建立的feature6的SHA)
如果采用git cherry-pick 77c5d11
这个没有成功,那就说明有冲突,当遇见这样的情况,我们就可以通过git commit
来手动提交上去或者git add.后直接使用git cherry-pick --continue
继续。
注意:
当出现冲突的时候我们可以采用下面这两种方法解决:
1.执行
git cherry-pick --abort
取消上次操作。2.执行
git commit --allow-empty
,表示允许空提交。
就这样小明把所有的文件都找回来了,这就是小明第一天在公司实习的故事。
如果我们在公司遇到和小明这样类似的情况,不要慌张,可以采用类似的方法解决,千万不要随便让代码回滚。