git flow---基于git的源代码管理模型&&远程仓库回滚

http://www.ituring.com.cn/article/56870学习地址

一般软件开发有瀑布模型、迭代开发模型、以及新出现的敏捷开发模型

一、git分支

1、主分支:

git flow中分为了主分支辅助分支两种分支大类,主分支是所有开发活动的核心分支,所有的开发活动产生的输出物最终都会反映到主分支代码中,主分支为master分支和development分支。

    1、master分支:

         master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了    一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。

    2、develop分支:

      develop分支是保存当前最新开发成果的分支。通常这个分支上的代码也是可进行每日夜间发布的代码(Nightly build)。因        此这个分支有时也可以被称作“integration branch”。

      当develop分支上的代码已实现了软件需求说明书中所有的功能,通过了所有的测试后,并且代码已经足够稳定时,就可以将所有的开发成果合并回master分支了。对于master分支上的新提交的代码建议都打上一个新的版本号标签(TAG),供后续代码跟踪使用。

      因此,每次将develop分支上的代码合并回master分支时,我们都可以认为一个新的可供在生产环境中部署的版本就产生了。通常而言,“仅在发布新的可供部署的代码时才更新master分支上的代码”是推荐所有人都遵守的行为准则。基于此,理论上说,每当有代码提交到master分支时,我们可以使用Git Hook触发软件自动测试以及生产环境代码的自动更新工作。这些自动化操作将有利于减少新代码发布之后的一些事务性工作。

2、辅助分支:

      辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能        开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限      的时间范围内存在。

      辅助分支包括:

  • 用于开发新功能时所使用的feature分支;
  • 用于辅助版本发布的release分支;
  • 用于修正生产代码中的缺陷的hotfix分支。一般命名hotfix-

以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。

二、远程仓库回滚

一般情况不要随意进行远程仓库回滚,会把其他的合作人员代码造成影响,如果要回腿请告知其他合作者将代码保存备份。

回滚远程仓库一般有三种情况:

1、删除最后一次提交

2、删除历史某次提交

3、修改历史某次提交

详解:

1、删除最后一次提交:

      这种情况最简单,使用如下两步就可以了:
      git revert HEAD
      git push origin master

      revert和reset是有区别的:
      revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在 
      reset是将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

      历史记录中已经没有之前revert生成的提交记录了,现在应该明白了吧。 如果删除远程仓库的最后一次提交的时候不需要保留历史记录的话,可以使用reset,命令如下:

    git reset --hard HEAD^
    git push origin master -f

-f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交。

2、删除历史某次提交

      先要git log 查看提交的版本号

      然后执行以下命令("commit id"替换为想要删除的提交的"commit id",需要注意最后的^号,意思是commit id的前一次提交):

    git rebase -i "commit id"^

      执行该条命令之后会打开一个编辑框,内容如下,列出了包含该次提交在内之后的所有提交。

      然后在编辑框中删除你想要删除的提交所在行,然后保存退出就好啦,如果有冲突的需要解决冲突。接下来,执行以下命令,将本地仓库提交到远程库就完成了:

    git push origin master -f

3、修改历史某次提交

      这种情况的解决方法类似于第二种情况,只需要在第二条打开编辑框之后,将你想要修改的提交所在行的pick替换成edit然后保存退出,这个时候rebase会停在你要修改的提交,然后做你需要的修改,修改完毕之后,执行以下命令:

    git add .
    git commit --amend
    git rebase --continue

      如果你在之前的编辑框修改了n行,也就是说要对n次提交做修改,则需要重复执行以上步骤n次。

      需要注意的是,在执行rebase命令对指定提交修改或删除之后,该次提交之后的所有提交的"commit id"都会改变。

猜你喜欢

转载自blog.csdn.net/weixin_41143293/article/details/100097452