git简单操作

本文介绍了一种基于Git的分支管理规范,包括开发流程中的创建、合并分支,以及代码提交、测试、预发布的步骤。强调了使用git pull --rebase的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

张三、李四、王五分别基于当前master分支创建dev-1001、dev-1002、dev-1003分支,以张三的1001为例,演示如下:
# 获取远程分支信息及其对象,确保origin/master是远程库最新的master
$ git fetch
# 从origin/master’s HEAD分出本地dev-1001分支,并进入
$ git checkout -b dev-1001 origin/master
# 将当前分支(dev-1001)推送到远程库
$ git push origin HEAD  
如果“宝力道活动”由张三以及另外多位工程师协同开发,假如你就是其中的工程师之一,你可以通过以下命令获取并进入到该分支:
# 
$ git fetch 
# 在origin/dev-1001的最顶端上创建本地dev-1001分支,并进入
$ git checkout -b dev-1001 origin/dev-1001
在本规范中,默认本地的dev-1001和远程dev-1001是一一对应的,此时打开.git/config文件,看是不是有类似如下的配置:
[branch "dev-1001"]
      remote = origin
      merge = refs/heads/dev-1001
如果没有如上的配置,此时git pull --rebase会被拒绝,因此建议你执行以下两个config配置,以支持简便的git pull/fetch:
# 配置本地dev-1001对应的远程库总是origin
$ git config branch.dev-1001.remote origin 
# 配置远程dev-1001分支对应的本地分支(refs/heads/dev-1001)
$ git config branch.dev-1001.merge refs/heads/dev-1001
# 此时在dev-1001分支下的git pull将变得简单
$ git pull --rebase
现在你可以在dev-1001下编写代码,进行git add/commit,时不时pull或push分支:
# 对本地代码进行编写并commit到本地dev-1001分支
$ git add/commit
# 获取远程分支,并将当前分支重新基于对应的远程分支(dev-1001)
$ git pull --rebase
# 将本地当前分支(dev-1001)推送给远程库dev-1001
$ git push origin HEAD
一般情况下,持续一段时间,代码总是会开发完成的,并且认为应该提交进入测试阶段。此时你们应该商定一个人----比如技术负责人、最后的提交者等等,假设这个人就是张三,对dev-1001做提交测试前的最后一些工作,即rebase 最新的 master:
# 自动fetch远程库分支信息及其对象(origin/master、origin/dev-1001等)
# 将dev-1001分支基于最新的origin/dev-1001分支
$ git pull --rebase
# 让当前分支基于最新的master
$ git rebase origin/master
# push当前分支到同名的远程分支
$ git push origin HEAD
完成之后,告知一下测试人员1001任务已提交,可以进行测试了。
其他同学如果想获取最新的、集成所有人工作的dev-1001代码,在张三同学push完后在本地dev-1001分支下执行以下命令
$ git pull --rebase
小贴士:
  这本规范中,在dev-xxxx分支下,我们一直强调使用git pull --rebase,而非git pull,这之间从语义上和效果上是不一样,甚至在他人rebase origin/master后只执行git pull还会导致代码协作失败,“丢失”代码。 
  
# git commit,尽量保证每次提交都有意义

当你不小心,写错了提交的注视/信息,该如何处理呢。 在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息。具体操作如下:

$ git add -u

$ git commit -m "add"

$ git add -u

$ git commit --amend -m "完整的提交信息"

1。3。2 启动测试

这个过程由测试人员操作,执行的脚本是test_init.sh,以下是测试人员test_init.sh脚本有关git部分的功能概括:
# 确保没有版本库之外的文件存在 
$ git clean -fdx
# 获取远程分支信息及其对象,确保origin/master是远程库最新的master
$ git fetch
# 创建即将被测试的testing分支,基于最新master
$ git checkout -b testing origin/master
# 如果当前testing分支存在,则强制重置
$ git checkout testing && git reset --hard origin/master
# 将dev-1001合并到当前testing分支下
$ git merge origin/dev-1001 
如果merge origin/dev-1001失败,则应该清空测试分支:
# 将当前testing分支以及当前工作区恢复origin/master
$ git reset --hard origin/master
然后告知1001工程师说明其合并失败无法测试,重新提交dev-1001。如果合并成功,则通过脚本部署到测试服务器上,即可进行测试。 

1。3。3 缺陷修复

在测试阶段也是bug不断涌现的时期,一旦测试人员发现了bug,则需要开发人员进行修复。
开发人员在dev-1001上对相关bug进行修复。在修复之前,建议rebase一下最新的origin/master。然后再在最新的dev-1001上进行修复。过程之中,多人协同修复多个bug时,需要通过git pull --rebase来获取其他人的最新代码:
# 进入并更新dev-1001环境
$ git checkout dev-1001
$ git pull --rebase
$ git rebase origin/master
# 修复缺陷,add/commit之后推送远程dev-1001分支
$ git push origin HEAD
如测试需要验证这些修复,则可以从新执行“启动测试”程序。 

1。3。4 测试通过

经过一系列测试,如认定达到一定的标准,则应该push到master:
# 写入当前的.tag_base文件
$ git checkout testing
$ echo "1001" > .tag_base
$ git add .tag_base
$ git commit -m "1001"
# push到远程master
$ git push origin testing:master
如果push失败,则需要重新执行“启动测试工作”,重新测试。

1。3。5 预发布

预发布版本是master版本。
如果确认该预发布版本可以更新到线上,则需要对该预发布版本做tag
# 对当前的 master分支打tag,“1001”串从.tag_base获取
$ git tag 20121114.1001 master 
# 将20121114.1001 推送到远程
$ git push origin 20121114.1001

1。4。1 编码

根据线上版本创建dev-1001.1分支:
# 确保获取到20121114.1001的信息及其对象
$ git fetch
# 基于20121114.1001创建dev-1001.1,并进入
$ git checkout -b dev-1001.1 20121114.1001
# 将当前分支(dev-1001.1)推送到远程库
$ git push origin HEAD
其他的工作和“常规开发流动”的“开发环节”一致,但不执行常规开发环节中最后一步的“rebase master”。 

1。4。2 启动测试

如果需要测试人员测试,则需要让测试暂停当前的测试,将testing转为dev-1001.1:
# 确保没有版本库之外的文件存在 
$ git clean -fdx
# 确保获取到 dev-1001.1的信息及其对象
$ git fetch
# 创建即将被测试的testing分支,基于最新dev-1001.1
$ git checkout -b testing origin/dev-1001.1
# 如果当前testing分支存在,则强制重置
$ git checkout testing && git reset --hard origin/dev-1001.1
和常规流程不一致的地方是,testing不需要基于master或相关tag任何点,合并当前要测试的dev-1001.1,而是直接指向dev-1001.1。

1。4。3 缺陷修复

如果测试有缺陷应该立即告知开发人员解决,开发人员继续在dev-1001.1分支上工作,除了分支号不一样,以及不能rebase master,其他基本操作规范和“常规开发”是一致的,最终push到远程dev-1001.1分支上。都修复完毕后告知测试人员。测试人员重新执行本章的“启动测试”重新测试。 

1。4。4 测试通过

测试通过后,需要将master分支指向即将上线的版本:
# 写入当前的.tag_base文件
$ echo “1001.1” > .tag_base
$ git add .tag_base
$ git commit -m “1001.1”
# 强制将远程master分支指向testing
$ git push origin +testing:master
此操作和“常规开发流动”的“测试通过”不同的地方是这里使用了“强制”push,即testing有”+”。 

1。4。5 预发布

预发布版本是origin/master版本。
如果确认该预发布版本可以更新到线上,则需要对该预发布版本做tag。同时要将本tag名称要体现到/version地址中,使能够通过浏览器了解到
# 对当前master打tag,“1001.1”串从.tag_base获取
$ git tag 20121115.1001.1
$ git push origin 20121115.1001.1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值