git简明实操模板

代码版本管理的情景。

项目远程仓库中有两个分支:

1】maseter分支作为发布分支,只接受要release到客户手中的代码,需要保证任何时候都能编译通过

2】dev分支作为开发分支,接受所有开发过程中的代码,需要保证任何时候都可以编译通过

你自己在本地以dev分支为base进行开发,测试通过后merge进入master分支。在版本管理的时候你要面对的几个主要问题:

1】保证自己的本地分支跟远程分支同步

2】保证自己的commit跟分支整洁

3】合并代码时候尽量少的冲突

4】自己的代码合并进远程仓库后不会引起问题

下面从仓库的建立开始,逐步进行介绍:

1】创建仓库

git clone 远程仓库地址

2】切换到开发分支

git checkout dev

git pull        # git pull 是定期的操作,需要时长进行,这是减少冲突的保证

3】以开发分支为base,创建自己的开发分支

git checkout -b myDev

4】在自己的开发分支中进行开发,提交自己的commit

git add -u
git commit -m "commit1"

git add -u
git commit -m "commit2"

git add -u
git commit -m "commit3"

git add -u
git commit -m "commit4"

5】现在碰到一个场景,你的当前task还没有开发完,但是你的代码已经有一段时间没有同远程dev分支进行同步了,这让你很忐忑,你可以通过如下操作进行同步

git checkout dev       # 切换到本地的dev分支
git pull               # dev 分支同远程dev分支进行同步

git checkout myDev     # 切换回自己的分支
git rebase dev         # 让自己的myDev分支同远程的dev分支进行同步,并保证自己的commit1、commit2、commit3、commit4处于所有commit记录中的最新位置,这个过程中可能会出现冲突,需要及时解决,如果过这个同步过程进行的比较频繁(如每隔一两天进行一次)及时的话,很少会出现冲突,就算有冲突也是很小的冲突很容易解决

6】在myDev分支上继续开发

git add -u
git commit -m "commit5"

git add -u
git commit -m "commit6"

git add -u
git commit -m "commit7"

git add -u
git commit -m "commit8"

7】经过这8个commit你已经完成了task的开发,完成了各种测试,需要将代码提交到远程dev分支中

git checkout dev
git pull
git checkout myDev
git rebase dev        # 将本地代码与远程代码进行最后的同步


git rebase -i # 将本地的8个commit进行合并,以简洁自己的版本管理,具体细节网上有很充足的教程
git push origin myDev:myDev    # 将本地的myDev分支推送到远程仓库的myDev新分支

# 需要注意的是上面虽然将本地的分支推到了远程仓库,但是此时的远程仓库myDev分支跟本地的myDev分支之间并没有跟踪关系,要创建他们之间的跟踪关系还需要 git --set-upstream origin myDev:myDev 指令操作

8】在远程仓库中创建merge request将代码合并进dev分支就可以了。

9】你提交的代码进入了远程的dev仓库之后,经过别人pull测试合格了,可以release了,后面你开始准备将你的开发代码合并进入release分支

10】切换到本地的master分支pick对应的代码

git log --author="你的账号名字"     # 查看你自己的提交记录,获取commitID

git checkout master
git pull

git cherry-pick commitID        # 前面你已经将commitID进行了合并,而且将commitID移到了最新的位置,所以你这里的这一步就会少很多麻烦,如果出现冲突解决冲突,不过前面你如果严格按照这个流程进行开发,这里理论上不会出现冲突

11】本地master分支代码测试通过,提交到远程自己的新分支

git push origin master:master-自定义远程新分支后缀

12】远程仓库中提交merge request 或者是cherry-pick请求,将自己分支中的代码合并到master分支中

13】其他人获取了你在master上的代码,联调测试通过,等待代码release

 

补充场景:

在6或者4的过程中,你又接收了新的task,这个task可以在你commit3的基础上继续进行,分两种情况:

1】新的task你可以非常快的完成,基本上不会影响你现在的工作进度

git stash         # 将现在工作现场进行保护
git checkout commit3ID -b myDevNew     # 以commit3ID为base创建一个新的开发分支

# 完成开发工作,提交代码

git checkout myDev # 回到原来的开发分支

git stash pop        # 恢复原来的工作现场,继续原来的开发工作

2】新的task是个长期的任务,且优先级比较高,需要停下手头的task,首先完成新的task

git add -u
git commit -m "保存工作现场"

git checkout commit3ID -b myDevNew # 创建新的开发分支

# 完成新task的开发工作,提交代码,流程如上面所本文所讲

git checkout myDev     # 切换回原来的开发分支,继续原task的开发

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章