Git版本控制流程和对分支的理解

一、Git常用命令

#更新
git pull

#将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
git pull origin master:brantest

#远程分支是与当前分支合并,冒号后面的部分可以省略
git pull origin master

#添加指定文件(将需要进行版本控制的文件放入暂存区)
git add 文件名

#添加所有文件(将需要进行版本控制的文件放入暂存区)
git add .	

#查看当前的状态
git status	

#提交文件(将暂存区的文件提交到本地git仓库)
git commit -m '添加内容'	

#推送文件(将本地仓库的文件Push到远程仓库)
git push origin master

#推送
git push

二、分支的作用

        几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着,你可以把你的工作,从开发主线上分离开来,然后在不影响主线的同时继续工作。

        分支对于团队开发非常重要,比如说一个项目现在是1.0版,那么开发团队可能要同时进行1.1版和2.0版的开发,这样代码就会出现较大分歧。这时候就需要用到分支了,不同的任务组在不同的分支上开发,互相之间不会影响。或者,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。

三、git commit

  • git commit的时候不要把不希望别人看到的代码commit上去,并且在commit的时候要检查代码。

        例如:我只是修改一下端口号,自己用着方便,不需要别人也更改,就不需要把这个修改commit上去

  • 如果说一个文件没有commit,那么我切换分支的时候,改动会被带过去;如果说这个文件commit了,那么切换分支的时候,改动不会被带过去
    • 总结:未commit的文件会在切换分支时被到处携带,直到执行commit的时候,未commit的文件才固定下来,归属于执行commit命令时的那个分支。

        

四、git merge和git rebase

        对于我们团队来说,强制要求使用git rebase,这样的话分支管理会比较清晰。

        首先我们应该知道git merge和git rebase都是用于把一个分支整合进另一个分支,只不过他们达成此目的的方式不同。

例:如下图所示,假设master分支中新增的内容与feature中正在开发的新功能有关系,为了把master分支中的新增内容合并到feature分支中,就有两种方法一种是git merge,一种是git rebase。接下来我们进一步解释merge和rebase的区别。萨达

git merge

        使用git merger就是将master分支中合并进feature分支,这会在feature分支中创建一个合并提交,这次提交会连结两个分支的提交历史。

合并操作很友好,因为它没有破坏性。现存的分支历史不会发生什么改变。

但是也意味着每当feature分支需要应用上游分支的更改时,都会在提交历史上增加一个无关的提交历史。如果main分支的更新非常活跃,这种操作也会对功能分支的提交历史产生相当程度的污染,使得分支结构提交历史变得杂乱不清晰。使用rebase就解决了这种问题。

git rebase

        顾名思义,rebase就是重新设置基准的意思,意味着,我们使用git rebase命令就可以feature分支的提交历史重新设置基准到master分支的提交历史的顶端,如下图所示:

        使用rebase操作的最大好处在于你可以让项目提交历史变得非常干净整洁。首先,它消除了git merge操作所需创建的没有必要的合并提交。其次,正如上图所示,rebase会造就一个线性的项目提交历史——也就是说你可以从feature分支的顶部开始向下查找到分支的起始点,而不会碰到任何历史分叉。

        rebase的缺点

        ①不当使用容易造成严重后果,要严格遵守黄金法则【永远不要在公共分支上使用 rebase 多人协作分支,同步主干,请使用 merge 】

        ②难以追溯历史,比如上面的 feature 分支在 rebase 之后,无法知道是什么时候从 main 切出进行的修改。无法知道什么时候合入的 main 分支。

参考:关于 Rebase 容易被坑的那些事 · 一个技术宅的碎碎念

五、分支管理 

特性分支

       首先说开发流程CI/CD,其中包含几个特性分支:

  • dev:开发环境,从feature去merge
  • test:测试环境,从feature去merge
  • pre/release:预生产环境,从master去merge,为了验证master代码
  • master生产环境,从feature去merge
  • feature:开发分支---小功能,feature创建的时候从master拉取
  • hotfix:bug修复分支,从master拉取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值