Git在商业项目中的使用流程
一 引言
这一篇文章还是记录我在杭州工作的总结。
我刚来公司的时候,对Git的使用很头痛,因为在学校里面很少用这个东西,即使用,一般也只有一个分支,不会出现代码冲突和代码合并的情况。但是公司里面一个项目组有那么多的人,无法避免代码冲突和合并。从开始的战战兢兢到后来教新人使用Git,也算是一个成长吧,记录一下我总结的使用方法。
二 关于冲突
公司里面用的是GitLab,其实和GitHub是一个道理。在团队协作时,合并代码的过程中出现冲突时非常正常的一件事,并不是错误。所以也不要害怕冲突,更不能试图掩盖掉冲突。我们知道一般一个项目会有很多的文件,包括源代码,文档等,冲突的根源是两个Git账号对同一个文件做了修改,也就是说,如果你和同事修改或者新增的不是同一个文件,并不会产生冲突。
三 没有冲突时的代码提交流程
在大部分时候,团队协作不会产生冲突,因为每个人负责的模块不一样,不会修改同一个文件。
一般一个项目有三类分支,master分支:项目上线的时候用的,develop分支:所有开发人员共有的分支,以及开发人员自己的分支,像我的一般就是xiajun
先设定一个情景,比如你昨晚下班的时候提交了代码,并且和同事的代码合并过了,然后今天上午你又写了很多代码,到了午饭时间,你准备提交新的代码。你需要按照以下步骤进行。
A 查看你在哪个分支,切换到xiajun分支(即自己名字命名的分支):
B git add 你要提交的文件或者文件夹。作用是将修改提交到暂存区,比如我们修改了根目录下的 file3.txt 和 dir2 目录下的 dir2_file2.txt:
C git commit
提交信息。将暂存区里面的内容提交到本地仓库,即你本机的仓库。提交信息一般用英文。
D 拉取远程develop分支的代码,因为你的同事在上午的时候可能修改了develop的代码:
上午有一个同事在根目录下面加了一个file2.txt,因为和我们修改的不是一个文件,所以没有冲突
E 使用git status查看提交哪些文件修改了没有提交:
这一步是必做的,防止有代码的修改,而忘了提交。
F 将代码推到名字为xiajun的远程分支:
G 在浏览器上进行代码的合并:
打开GitHub:
点击上面的按钮:
点击上面的按钮,要注意选择好源分支和目标分支,源分支是xiajun,目标分支是develop。
上面的提示告诉我们这次的合并没有冲突。点击绿色的按钮:
写好合并信息后,就可以Confirm merge了。然后我们可以去develop分支查看一下自己的修改是否合并了过去:
上面的乱码就是我这次提交的内容。
这个过程的分支的流程大致是:远程的develop -> 本地的xiajun -> 远程的xiajun -> 远程的develop
四 有冲突时的代码提交流程
冲突会在两个地方发生,一是在D那一步,一是在G那一步,D处理起来比较麻烦。
所有流程和上面一模一样,除了D这里要处理一下冲突:
比如同事在file2.txt里面加了一些东西(原来只有一行中文):
而你直接修改了file2.txt:
试图从develop分支拉取代码:
提示我们有冲突,怎么办呢?如果你本来不应该修改这个文件,那就直接拷贝develop中的file2.txt的内容覆盖掉你的。如果你也需要修改这个文件,那就找同事商量。
假设是第一种,我们从浏览器拷贝develop分支的file2.txt的内容到磁盘上的file2.txt,然后重新提交一下这个有冲突的文件:
后面的步骤和上面三里面的内容一样。
五 几个需要注意的地方
1 除了技术Leader以外,一般任何人都不可以动master分支
2 推到远程分支以前,一定要用git status查看自己是否提交了所有修改的内容,没有做这一步可能会忘了提交一些内容,估计Leader会锤你一顿
3 冲突不知道怎么处理的情况下,和与你冲突的同事商量,不能随便冲掉别人的代码
Git在商业项目中的使用流程的更多相关文章
- AppScan在项目中的使用流程
AppScan在项目中的使用流程 http://www.docin.com/p-829022229.html
- git 在 A 项目中引用 B 项目
git 在 A 项目中引用 B 项目 场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...
- git分支在项目中管理
实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241 版权声明: https://blog.csdn.net/ShuSheng00 ...
- salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...
- 【开发工具】-- IDEA集成Git在实际项目中的运用
1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...
- Git 在小团队中的管理流程(转)
目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...
- Git 在小团队中的管理流程
目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...
- 两张图让git新手在项目中运用git命令行
创建分支命令: git branch (branchname) 切换分支命令: git checkout (branchname) 当你切换分支的时候,Git 会用该分支的最后提交的快 ...
- web项目中的执行流程参数传递详解
还是从这个图开始讲解: struts2中有一个存放数据的中心:值栈.(值栈里面有map和对象栈) 首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到 ...
随机推荐
- [Swift]LeetCode824. 山羊拉丁文 | Goat Latin
A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and up ...
- Android开发:在Eclipse中配置Android环境
一.文件需要: https://pan.baidu.com/s/1-XCSSPW5JGyPRlvwRVSfmA 提取码:m5t8 NDK过大没有上传在这个文件里. 二.在Eclipse中配置Tools ...
- 利用NPOI生成word文档(c#)
WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...
- [转]基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- Unix程序员的Win10二三事
macOS延续自BSD Unix, Linux则是从内核开始重新编写但延续Unix使用方式的Unix.所以mac还有linux程序员,一般都算是*nix程序员,尽管其中还有不少的区别. Windows ...
- EF架构~mysql数据库无法创建数据模型
回到目录 主要是通过vs2017+mysql.Data+Mysql.data.Entity+ef 来进行开始,当我们选择数据模型生成实体时,可以会出现以下问题: http:// 解决办法: 1.安装 ...
- mongodb分片扩展架构
目录 一.简介 二.分片集群 三.数据分布策略 四.Mongos访问模式 五.Config元数据 六.分片均衡 参考文档 一.简介 MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『 ...
- 我们知道CDN护航了双11十年,却不知道背后有那么多故事……
情不知如何而起,竟一往情深.恰如我们.十年前,因为相信,所以看见.十年后,就在眼前,看见一切. 当2018天猫双11成交额2135亿元的大屏上,打出这么一段字的时候,参与双11护航的阿里云CDN技术掌 ...
- Magicodes.WeiChat——V3.0(多租户)版本发布
主要内容如下: 添加项目Magicodes.WeiChat.Data.Multitenant,全面支持多租户(基于EF已经ASP.NET Identity) 增加租户管理.租户成员管理.修改密码.公众 ...
- 【响应式编程的思维艺术】 (2)响应式Vs面向对象
目录 一. 划重点 二. 面向对象编程实例 2.1 动画的基本编程范式 2.2 参考代码 2.3 小结 三. 响应式编程实现 四. 差异对比 4.1 编程理念差异 4.2 编程体验差异 4.3 数学思 ...