diff --git a/Lab2/Lab2.md b/Lab2/Lab2.md index b2aa252..518ef92 100644 --- a/Lab2/Lab2.md +++ b/Lab2/Lab2.md @@ -18,9 +18,8 @@ 正式环境中存储库不只一个人维护,常常出现本地软件版本才V1.0,服务器仓库都更新到V1.3的情况。这时候直接推送,会报错 ![](./git_push_error.png) 需要先拉取服务器的更改,合并代码,有合并冲突的先解决冲突,然后再提交、推送。 -可以在本地存储库右键菜单选择“TortoiseGit”,然后选择“拉取”,点击确认。 ## 克隆 -指将远端服务器的存储库下载到本地 +指将远端服务器的存储库下载到本地。如果想把别人的存储库下载到本地就用到克隆了。 拿本存储库举例,在本地新建一个文件夹,进入文件夹,右键菜单选择“Git 克隆”,弹出克隆窗口。 ![](./git_clone.png) ![](./git_server_clone_url.png) diff --git a/Lab3/git_checkout.png b/Lab3/git_checkout.png new file mode 100644 index 0000000..01c12c8 Binary files /dev/null and b/Lab3/git_checkout.png differ diff --git a/Lab3/git_create_fork.png b/Lab3/git_create_fork.png new file mode 100644 index 0000000..7bd13f8 Binary files /dev/null and b/Lab3/git_create_fork.png differ diff --git a/Lab3/git_flow.png b/Lab3/git_flow.png new file mode 100644 index 0000000..95ca72f Binary files /dev/null and b/Lab3/git_flow.png differ diff --git a/Lab3/git_fork_push.png b/Lab3/git_fork_push.png new file mode 100644 index 0000000..8343b77 Binary files /dev/null and b/Lab3/git_fork_push.png differ diff --git a/Lab3/git_tag.png b/Lab3/git_tag.png new file mode 100644 index 0000000..ef040fc Binary files /dev/null and b/Lab3/git_tag.png differ diff --git a/Lab3/lab3.md b/Lab3/lab3.md index 1fbf0a4..dfb054b 100644 --- a/Lab3/lab3.md +++ b/Lab3/lab3.md @@ -1,8 +1,59 @@ # 分支管理 - +前面提交、推送操作都是在“master”分支进行的。针对一个不断迭代的复杂项目,如果全部都在“master”上操作,版本的结构会乱,其他人看不懂哪个提交是稳定的,是生产下发版本,哪个提交是尚在开发版本。 +针对这一问题,下面介绍Git flow分支模型,大家不一定要严格套这个模型。 +模型的分支如下: - master - develop -- release -- hotfix - -多定制版本维护 \ No newline at end of file +- feature/xxx +- hotfix/xxx +- release/xxx + +它们的流程图如下: +![](./git_flow.png) +## master +- master主分支,代码库应该有一个、且仅有一个主分支,主分支存放最稳定的程序版本 +- 所有用于正式生产下发的版本都应该在master分支上发布 +- 不能直接在master分支上修改提交,只能从其它分支合并 +- 所有在master上的提交应该标记tag +## develop +- develop分支是主开发分支 +- 用于合并来自feature分支的程序 +- 从该分支创建release分支 +- 接收来自release和hotfix分支的优化 +## feature +- 用于新功能的开发 +- 从develop分支签出 +- 开发完后合并到develop +## hotfix +- 用于紧急修复现场出现的bug +- 从master签出 +- 完成修复后要双向合并到master和develop +## release +- 用于准备版本发布 +- 从develop分支签出 +- 等测试组测试通过,双向合并到master和develop +## 其他说明 +远程仓库应该只存在两个分支,一个是master分支,存放线上(生产环境)版本,这个分支的代码总是可靠可用的;另一个是develop分支,这个分支用于日常开发。 +hotfix分支、feature分支和release分支都在本地,原则上不能推送到远程仓库。这三种分支都属于临时性需要,使用完以后,应该删除。 +develop分支下允许有多个feature分支,且尽量避免冲突;允许在有feature处在开发中的情况下从develop分支拉取到release分支。 + +# 分支操作 +## 创建分支 +在工程目录下右键菜单选择“TortoiseGit”,点击“创建分支”。 +![](./git_create_fork.png) +输入分支名称。“切换到新分支”可选,后面可以手动切换。点击“确认”新分支便创建成功。 +## 切换分支 +想要在某个分支上做修改提交,首先要切换到该分支。 +在工程目录下右键菜单选择“TortoiseGit”,点击“切换/检出”。 +![](./git_checkout.png) +选择分支,点击确认。 +## 创建标签 +master分支提交后要加一个标签,用来表示版本号。 +在工程目录下右键菜单选择“TortoiseGit”,点击“创建标签”。 +输入标签名称,选择分支即可。 +![](./git_tag.png) +## 分支推送 +当某个分支提交的差不多了,就可以推送了。 +之前推送的是master分支,现在可以选择本地的其他分支。 +![](./git_fork_push.png) +值得注意的是“包括标签”选项,按照模型,master分支需要标记Tag版本号,master分支推送时勾选该选项可以将Tag同步到服务器。 \ No newline at end of file diff --git a/readme.md b/readme.md index 945220c..05408ac 100644 --- a/readme.md +++ b/readme.md @@ -12,6 +12,6 @@ http://172.188.24.12:3000/ ## 教程内容 0. [Git环境安装](./Lab0/lab0.md) 1. [创建、修改、暂存和提交](./Lab1/lab1.md) -2. [克隆、拉取、推送](./Lab2/Lab2.md) +2. [推送、拉取、克隆](./Lab2/Lab2.md) 3. [分支管理](./Lab3/lab3.md) -4. [进阶(coming)](./) \ No newline at end of file +4. [](./) \ No newline at end of file