内容目录

文档控制

1.概述

1.1.概述

1.2.参考资料

2.Git相关知识

2.1.Git代码管理

3.使用命令行做代码管理和Review

3.1.概述

3.2.项目代码管理

3.3.项目代码Review

4.使用Eclipse的Git插件做代码管理

4.1.概述

4.2.项目代码管理

4.3.项目代码Review

1. 概述

本章主要描述文档功能,即当使用Git作为代码管理工具,并结合Phabricator的Arcanist命令行工具做代码Review时,项目从pull到push全程的操作方法。包括两种方式:仅使用命令行和使用Eclipse的Git插件结合命令行。

1.1. 概述

1.1.1. 文档功能

文档描述了:开发人员从领取到开发任务到最终代码提交过程中如何进行代码管理和Review。

1.1.2. 文档适用

  1. 适用于使用Git作为代码管理工具的项目;
  2. 适用于使用Phabricator的Arcanist作为代码Review的项目。

1.2. 参考资料

1.2.1. 参考资料推荐

  1. Git相关教程:http://wiki.jikexueyuan.com/project/git-tutorial/
  2. Arcanist英文UserGuide地址:https://secure.phabricator.com/book/phabricator/article/arcanist/

2. Git相关知识

本章节主要讲解必要的Git相关知识,帮助对文档内容的理解。

2.1. Git代码管理

2.1.1. 讲解范围

本章只讲解代码管理过程中用到的分支创建与合并。

2.1.2. 基于Git的代码管理

使用Git做项目代码管理时,从宏观上看主分支只有一条:master,每当有新功能开发完成并提交,master分支都会向前移动一步,越来越长。图中HEAD指的是当前分支,它直接指向的是分支,而不是提交(节点)。

当我们创建新的分支,例如 dev 时,Git 新建了一个指针叫 dev,指向 master 相同的提交,再把 HEAD 指向 dev,就表示当前分支在 dev 上:

创建并切换到一个新的分支工作区不会有任何变化。但是再次对工作区的修改和提交就是针对dev分支的了,每次提交,dev会向前移动一步,而master不变。

假如我们在 dev 上的工作完成了,就可以把 dev 合并到 master 上。Git 怎么合并呢?首先切换到master分支,你会发现工作区的内容神奇的还原了。这时你就需要将dev的更改内容合并到master分支了。

使用git merge someBranch命令,可以将someBranch合并到当前分支,删除无用的开发分支,一次功能的开发就完成了。

另外你还需要知道的就是远程和本地的概念。认识什么是远程仓库和本地仓库,并掌握远程分支、本地分支和它们之间的各种操作。

学习地址:http://git-scm.com/book/zh/ch3-5.html

3. 使用命令行做代码管理和Review

本章以只使用命令行的方式来做代码管理和Review

3.1. 概述

3.1.1. 总体预览图

开发人员接到新的开发任务后,如果没有拉取过远程仓库代码,就拉取一次。否则请先更新到代码最新状态。然后,由第一个人创建一个新的开发分支并推送到远程。再然后,所有开发同一功能的开发人员跟踪对应的远程开发分支,进行开发。最后功能开发完成时,由最后一人提交代码统一提交代码Review,通过后将代码提交到master。功能开发完成。

3.2. 项目代码管理

3.2.1. 拉取远程仓库代码

使用Git Bash或命令行工具,在系统合适位置(如:E:\MyWorkspace)拉取远程仓库代码,这个位置将作为本地仓库。

如果已有对应远程仓库的本地仓库,在本地仓库执行指令”git pull”获取到最新代码,再继续下面的步骤。

这里只解释一遍”git pull”的含义:如果当前分支在跟踪一个远程分支,则将这个远程分支的最新代码拉取到本地仓库。这个解释只是概述大意,不做更深的讨论,想进一步了解,请查看2.1.2小节提供的参考网址。

3.2.2. 创建开发分支并推送到远程

如果新的开发任务已经创建好了远程分支,则跳到步骤3.2.3.否则创建一个新的开发分支

然后将这个分支推送到远程,远程分支的命名请按照具体规定

此时发现当前分支并没有跟踪远程的开发分支,这就需要下一步

3.2.3. 跟踪远程开发分支

跟踪远程开发分支

其实这句指令是新建一个跟远程分支同名的分支并跟踪这个远程分支。所以这个remote_T34分支是一个本地分支!

3.2.4. 开发

功能开发。

3.2.5. 提交代码并推送到远程开发分支

如果代码有修改,运行”git status”时Git会给出一些有意义的提示

对修改的代码进行一次提交

再次运行”git status”命令,提示没有需要提交的了,并建议使用”git push”命令将本地修改推送到远程。

代码推送后,执行”git status”发现自己本地仓库的代码已经是最新的了。

本节描述了一次提交。其实一个正常的功能开发就应该伴随着无数次的开发和提交的迭代。

3.2.6. 切换到master分支并合并远程开发分支的代码

当功能开发完成后,就需要将开发分支的代码合并到master主分支了。这一步是在提交代码Review之前的准备。

首先切换到master分支

当然这个master其实也是本地分支,只是它名字跟远程主分支一样而且它在跟踪远程master。在合并前还需要保证合并的两者都是最新的代码,所以

然后,可以放心合并了。”git merge someBranch”的意思是将someBranch分支的内容合并到当前分支下。

注意这次合并是在本地master分支下,合并本地remote_T34分支的内容。然后你告诉我本地master和本地remote_T34的代码都是最新的,那我合并这两个然后推送到远程是什么效果?诶~,就是合并远程master和远程remote_T34!

但是!此时千万不能推送到远程,因为还没有高层的点头(代码Review)!

其实这个小节主要作用就是处理代码合并时的冲突,如果有冲突,全程大概也只有这个地方高发。合并完成后,就该提交代码Review了。

3.2.7. 代码Review通过,代码最终提交到master

提交的代码Review通过之后,就可以推送代码到远程了。3.3.将做详细讲解。

3.3. 项目代码Review

3.3.1. 提交代码Review

执行arc diff提交代码Review,会弹出文本编辑器让你编写一些信息,其中最重要的”Reviewers”和”Subscribers”一定要认真填写。

保存关闭即可。

3.3.2. 查看Review状态

执行”arc list”查看Review状态,Git Bash对代码Review工具Arcanist的支持不是很完善,如果执行arc开头的命令提示信息不完全或者很怪异,可以更换使用命令行工具

上图的状态是还未审批通过,下图是审批通过

3.3.3. 将代码推送到远程master分支

执行”arc land”命令,将代码推送到远程master分支

提示如上图说明推送成功。

命令”arc land”封装了包括”git push”等的许多Git命令,这样你就不用为没有执行”git push”命令的推送到远程感到怪异了。

做到这一步,说明你已经开发完了一个功能,终于可以松一口气了。

4. 使用Eclipse的Git插件做代码管理

本章描述如何使用Eclipse的Git插件来替代命令行做代码管理,但代码因为Eclipse不能对Arcanist支持,所以代码Review依然使用命令行。

4.1. 概述

4.1.1. 概述

本章考虑到开发人员使用Eclipse作为IDE,而Eclipse也提供了对Git支持的插件,所以新开一节讨论这个插件的常用的用法。

4.2. 项目代码管理

4.2.1. 项目导入

将项目导入Eclipse,如果是Git管理的项目,会显示分支信息

4.2.2. 创建分支并推送到远程

如果新的开发任务已经创建好了远程分支,则跳到步骤3.2.3.否则创建一个新的开发分支:在项目上右键->Team->Switch To->New Branch…

弹出框里输入分支名,Finish

将项目推送到远程:右键项目->Team->Push Branch ‘someBranch’…

输入远程分支名,Next

直接Finish

此时,T35分支已经在跟踪远程remote_T35分支了,不信你可以在命令行看到

如果经过了这个步骤,如上面所说,该T35分支已经在跟踪远程remote_T35分支了,跳过下一步(即4.2.3.)。

4.2.3. 跟踪远程开发分支

如果在接到开发任务时,Eclipse已经有了这个项目,则先将代码更新到最新。

切换到master分支下,右键项目->Team->Pull

跟踪远程分支remote_T31,右键项目->Team->Switch To->Other…

选择Remote Tracking下的你需要跟踪的远程分支,Checkout

选择新建一个本地分支来跟踪

分支名改不改随意,Finish。切换到跟踪远程开发分支的本地分支

4.2.4. 开发

功能开发。

4.2.5. 提交代码并推送到远程开发分支

工程一旦修改,工程目录和被修改过的文件将出现一个”>”。

然后,Commit修改

弹出窗口编辑提交信息,直接Commit或者CommitAndPush

上一步如果选的是Commit,就需要Push了

直接确定Push

Push完成后本次提交完成。

4.2.6. 切换到master分支并合并远程开发分支的代码

切换到master分支

同样,合并前要保证合并双方都是最新代码,所以要在master分支pull一次,省略。然后直接合并

这次可以选择本地分支了,记得当前的分支么?当前的分支是本地master所以这里选择本地remote_T31分支,合并

如果出现冲突会提示

Eclipse里也会有提示,文件左边有个红色的,文件会如下图

修改后,将修改后的冲突文件Add To Index.

确保将所有冲突文件处理完后,重新CommitAndPush一次。此时本地master分支领先远程master分支3个修改,因为还没有推送到远程。同样推送之前要代码Review。

4.3. 项目代码Review

4.3.1. 提交代码Review

由于Eclipse没有对Arcanist做任何支持,所以如果想用Arcanist做代码Review,还是使用命令行吧。用法与3.3.无异,请看3.3.节。

关于git代码管理的详细操作流程相关推荐

  1. Git 代码管理(代码提交和代码回退)

    Git 代码管理(代码提交和代码回退) Git的主要功能是代码管理,版本管理,分支管理. 在远程代码管理平台上,项目的代码被管理在一个远程代码仓库中,在本地,代码保存在一个本地代码仓库中.通过Git, ...

  2. GIT代码管理-SourceTree工具

    前言 本文主要介绍SourceTree工具在开发过程中的日常代码管理相关操作,此工具作为GIT代码管理的可视化工具使用. 准备工作 在使用SourceTree工具前需要先安装GIT,同时将代码由远程仓 ...

  3. Git——代码管理工具

    摘要 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linux 内核开发而开发的一个开放源码的版本控制软件.Git 与常用的版本控制工具 CVS, Subv ...

  4. Git代码管理与发布流程

    分支定义与作用: 主干分支: origin/master:总是代表了生产环境准备就绪的状态的主分支 ,必须保证与生产环境在正常运行的代码一致.(每次需求上线验收完成后,由开发负责人从dev或Hotfi ...

  5. [Git] 代码管理之 Git(一)Git 入门

    Git 简介 当我们开发一个产品的时候.所有的代码并不是一气呵成全部一次性完成的,肯定是经过多个步骤,大项目甚至会多人好几个月甚至几年共同开发而成的,而这个过程中,我们的代码要形成很多个版本,好比(图 ...

  6. Git代码管理常用命令操作

    一.Git提交代码过程 安装好Git,连接远程仓库地址,拉取代码到本地分支master,根据本地分支master创建分支b,修改完毕后,可以commit到本地分支b,之后可以提交到远程仓库地址,若没有 ...

  7. Git—代码管理、提交及冲突解决流程的思考

    1 代码管理   Git不多说,大家都知道这是一个分布式版本控制系统,对开发者而言,可以敏捷高效的进行代码管理及开发,也非常适合多人协作.话不多说,下面就来点干货. 1.1 创建新仓库   我们在工作 ...

  8. Git代码管理流程(分支、fork、tag)

    我们使用Git做代码管理时,经常会出现这种情况:项目需要稳步迭代升级(暂且叫做标品)的同时,定制化的需求接憧而至.然而定制化内容(不属于正常迭代升级的范围),我们该如何处理?下述如我想到的几种方式: ...

  9. Git配置详细教程及基础使用方法,教你轻松学会git代码管理

    前言:现在版本控制使用Git居多,如果你还不会的话,点进来,教你如何配置Git. 目录 一.Git介绍 二.Git安装配置 2.1 安装过程详解 2.2 检查安装是否成功 三.提交和更新代码到Git仓 ...

  10. Git 代码管理常用命令

    1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加远程仓库:$ git ...

最新文章

  1. selenium的基础知识点
  2. 封装 vue 组件的过程记录
  3. 树莓内核驱动io框架
  4. mysql 多个字段拼接
  5. python生成随机字符串
  6. 使用RMAN备份控制文件(control file)和系统参数文件(spfile)
  7. Selection change event Issue is fixed handleListItemPress,SingleSelectMaster
  8. oracle+去括号,关于001 TK的几个问题,请大家一起讨论一下
  9. TCP/IP通信程序设计方式
  10. PWN-COMPETITION-HGAME2022-Week4
  11. AI算法连载14:统计之模型选择
  12. C/C++ OpenCV均值滤波
  13. EntityTransaction
  14. 019-批量修改redis TTL和批量删除key
  15. 2019年 Github 上最热门的 Java 开源项目
  16. Matlab根据广播星历表计算卫星坐标
  17. kuka机器人程序是c语言吗,KUKA机器人示教器编程问题讲解——KUKA机器人
  18. 手机熊猫直播怎么投屏
  19. 【华为云会议开发指南】开发流程
  20. 电脑win10系统如何开定位服务器,win10系统下如何打开/关闭定位?windows10打开/关闭定位图文教程...

热门文章

  1. 计算机配件出口单证,出口制单
  2. java模拟器怎么调中文_电脑java模拟器(javagame模拟器)
  3. 穷爸爸富爸爸作者呼吁投资者提前进入数字货币市场
  4. CRM如何维护客户关系?CRM成功案例分析
  5. 陶哲轩论文解析:从特征值到特征向量
  6. [导入]关于Gmail无法链接的解决方法。
  7. Java面试相关问题以及解析
  8. 常用搜索方法(部分)
  9. PLA-PEG2000-Maleimide,聚乳酸和马来西安亚楠修饰的PEG,MAL-PEG2000-PLA
  10. 你需要TrustedInstaller提供的权限才能对此文件进行更改