Git之模拟工作流
1、 此时,假设产品经理提了一个需求,我们需要进行代码开发。
首先我们新建一个bash.txt文件,添加一些内容并保存,如下图所示:
用git status
显示工作目录和暂存区的状态,通过Untracked files我们可以知道新建的bash.txt在本地仓库还未进行跟踪并且它还在工作区,并未添加到暂存区和本地仓库,如下图所示:(关于工作区、暂存区、本地仓库、远程仓库的解释请点击此处)
然后我们可以用命令git add 文件名
把它添加到暂存区里,然后在用git commit -m "描述信息"
将它添加到本地仓库里,如下图所示:2、产品经理临时变更需求
我们在bash.txt内增加一些内容,如下图所示:
当需求变更好之后,代码需要提交到暂存区里,因为没有测试所以不用提交到本地仓库,如下图:
今日工作完成,可以回家啦。
3、第二天当我们正要把修改提交到本地仓库时,产品经理说昨天临时变更的需求不需要了,要恢复到修改之前的状态。
我们通过git reset HEAD 文件名
把暂存区里的目录用本地仓库的目录替换,再用命令行git checkout -- 文件名
把工作区的文件用暂存区的文件替换,如图所示:
此时,我们可以看到bash.txt里的内容又恢复到原来的样子了。
4、现在进行第二天的需求开发。
我们在bash.txt内加上内容并保存,如下图所示:
之后的步骤参照第1点,具体如图所示:
5、此时产品经理又说第二次的需求不用做,现在要回到第一次需求提交时的状态。
我们用git log
获得commit号,然后在这些commit号中找到第一次提交需求的commit号(PS:描述信息为:bash first commit)的号,然后用命令git reset --hard commit号
回到第一次提交时的状态,如下图所示:
6、最后产品经理说这一切现在都不需要做了。
所以我们需要清空本地仓库,用到命令git rm bash.txt
,但此时我们的暂存区和仓库区还没清空,只清空了工作区我们可以由下图看到:所以此时还得用命令
git commit -m "描述信息"
提交以下,如下图所示: