设为首页 收藏本站
查看: 691|回复: 0

[经验分享] Git 在小团队中的管理流程

[复制链接]

尚未签到

发表于 2018-1-15 07:51:31 | 显示全部楼层 |阅读模式
  目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作。
  有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料。

  本文介绍了小团队中 Git 管理的基本使用流程。
  
小团队的代码管理可以采用这样一种方式:项目存在一个中心远程仓库,作为团队成员进行代码交流的主要场所。同时可以存在一些成员远程仓库,用于局限在团队中部分成员间的代码交流。并将成员分成以下几类不同的角色:负责人、普通组员、预发布责任人 和 版本修复责任人。下面的章节具体介绍了各类角色的 Git 使用流程。
  基本须知
  
需要多个人共同完成的分支可以建立远程分支,单个人完成的分支只建立本地分支即可。

一、负责人
  负责人的职责:管理远程仓库。
  
负责人的工作均可直接在远程仓库完成。

1.创建项目


  • 创建公有项目  


  • 添加README.md  


  • 添加证书  


  • 添加忽略文件  


  • 创建 dev 分支
2.其他


  • 更新 README.md 文件
二、组员
  工作流程



  • 克隆项目
  • 签出并创建 dev 分支,使其跟踪远程的 origin/dev 分支。
  • 在dev分支基础上创建自己的分支 member* 。



  • 在自己的分支上添加文件
  • 在自己的分支上修改文件
  • 合并到dev分支
  • 推送dev分支到origin/dev分支

  // 更新 .gitignore 文件


  • 从 dev 新建一个分支 ignore (如果预测变更频繁就建立一个远程分支,现在一般都有模板,偶尔有个没有忽略的直接在dev分支上改就可以了)
  • 更新忽略文件
  • 尽快合并到\推送到 origin/dev 分支 (避免两个组员同时更改该文件造成冲突。)

1.创建本地仓库
  

$ cd [项目路径]  
$ git clone https://coding.net/tangyikejun/GitTest2.git
  
$ git checkout -u -b dev origin/dev
  
$ git checkout -b [MEMBER_NAME];
  

2.更新本地仓库
  

$ git add .  
$ git commit -m”your comments”
  // …                                               // 多次提交后完成了一项新的功能,自己的分支下能正常运行
  
$ git checkout dev
  
$ git merge --no-ff [MEMBER_NAME]                       // [MEMBER_NAME] 是自己的分支名称
  
$ git push
  

3.更新 .gitignore 文件
  

$ git checkout dev  //…                                               // 更新忽略文件
  
$ git add .
  
$ git commit -m“更新.gitignore文件”
  
$ git push
  

4.常用查询命令
  

$ git branch                                            // 查看自己所在分支 以及自己所拥有的分支  
$ git log --pretty=“%h - %cn(%ci): %s” --graph          // 查看自己的提交记录
  
$ git reflog                                            // 查看自己的操作历史
  
$ git status                                            // 查看本地仓库当前的文件状态
  
$ git blame [FILE_PATH]                                 // 查看文件的每一部分最后由谁改动
  

5.意外情况处理
  意外:推送代码到远程 dev 分支时发生冲突。
  
解决方案:先把 远程仓库的 origin/dev 分支拉取下来,解决冲突文件后再推送。平时的时候尽量避免不同组员更改同一个文件。
  

$ git push  

  // …                                               // 遇到错误
  

  
$ git pull
  

  // …                                               // 解决冲突
  

  
$ git add .
  
$ git commit -m”solve conflict:由于XX原因出错,修改XX文件解决问题”
  
$ git push
  

  意外:不小心把自己的工作成果push到了master分支。
  
解决方案:先对master进行回退,再使用git push -f将错误的提交删除。
  意外:错误地把文件添加到git仓库并推送到了远程。
  
解决方案:先将文件从git仓库中移除,但是保留工作目录中的对应文件。然后将该文件添加到忽略文件中,再重新进行提交。命令如下:
  

$ git rm --cached [FILE_PATH]  …                                               // 将该文件添加到 .gitignore 文件
  
$ git add .
  
$ git commit -m"detach file XXX"
  
$ git push
  

三、预发布责任人 & 版本修复责任人

1.预发布责任人
  当需要发布新的版本时,预发布责任人:


  • 基于最新的 dev 分支创建一个>
  • 进行修缮工作
  • 合并到 dev 分支
  • 合并到 master 分支
  • 打标签
    删除>
  

$ git checkout dev  
$ git pull

  
$ git checkout -b>  //…                                               // 进行修缮工作
  
$ git checkout dev

  
$ git merge --no-ff>  
$ git checkout master

  
$ git merge --no-ff>  
$ git tag v1.2

  
$ git branch -d>  

  使用 git show [TAG_NAME]可以查看标签对应的提交信息。

2.版本修复责任人
  当新发布的版本发现 bug 时,版本修复责任人:


  • 基于最新的 master 分支创建一个 hotfix-版本号 分支
  • 进行debug工作
  • 合并到 master 分支
  • 打标签
  • 合并到 dev 分支
  • 删除 hotfix-版本号 分支
  

$ git checkout master  
$ git pull
  
$ git checkout -b hotfix-1.2.1
  //…                                               // 进行修缮工作
  
$ git checkout master
  
$ git merge --no-ff hotfix-1.2.1
  
$ git tag v1.2.1
  
$ git checkout dev
  
$ git merge --no-ff hotfix-1.2.1                        // 在评论中写入修复的bug等详细内容
  
$ git branch -d hotfix-1.2.1
  

3.意外情况处理

  意外:某组员完成自己的任务后合并到 dev 分支,推送时发现>
  
解决方案:把 origin/dev 分支拉取下来,将冲突解决后再次提交。(注意这里解决冲突后 master 分支上的文件与该组员的工作成果依旧是有冲突的。除非该组员解决冲突时不更改>
四、成员远程仓库
  当某个团队成员希望其他成员协助完成他的编程任务时,该成员可以为自己的本地仓库创建一个远程仓库作为成员远程仓库,方便其他成员协助。建立成员远程仓库可以避免中心远程仓库的代码交流繁杂混乱。
  
成员远程仓库在在操作上是中心远程仓库的简化版。仅在细微处有所不同。

1.求助者


  • 创建成员远程仓库
  • 添加成员远程仓库
  •   推送自己的分支到成员远程仓库的 master 分支

  •   拉取成员远程仓库的 master 分支到自己的分支

  

$ git remote add [ALIAS_NAME] [GIT_ADRESS]  
$ git push [ALIAS_NAME]  [BRANCH_NAME]:[BRANCH_NAME_REMOTE]
  

  
$ git pull
  

  举例:
  

$ git remote add binRepo https://coding.net/chenbin/GitTest2.git  
$ git push binbin  binRepo:master                               //由于是第一次推送,该操作已经使得分支binbin 跟踪了远程分支 binRepo/mastr
  

  当某个分支 a 跟踪了远程分支 b,即 b 成为 a 的默认拉取来源,也因此,一个本地分支同一时间只能跟踪一个远程分支。
  让本地某分支跟踪远程分支的命令
  

$ git branch -u [REPO_NAME]/[REMOTE_BRANCH_NAME] [BRANCH_NAME]  
// git branch -u binRepo/master binbin
  

2.协助者


  • 克隆成员远程仓库
  • 在 master 分支基础上创建自己的分支 member*
  • 在自己的分支上修改代码
  • 合并到 master 分支后推送到成员远程仓库
  

$ git clone https://coding.net/chenbin/GitTest2.git  
$ git checkout -b member1;
  //…                                                       //修改代码
  
$ git add .
  
$ git commit -m"我帮你把XX功能完成了"
  
$ git checkout --no-ff merge member1;
  
$ git push
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435215-1-1.html 上篇帖子: 使用git将项目上传到github(最简单方法) 下篇帖子: git stash 用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表