一 引言

这一篇文章还是记录我在杭州工作的总结。

我刚来公司的时候,对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在商业项目中的使用流程的更多相关文章

  1. AppScan在项目中的使用流程

    AppScan在项目中的使用流程 http://www.docin.com/p-829022229.html

  2. git 在 A 项目中引用 B 项目

    git 在 A 项目中引用 B 项目   场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...

  3. git分支在项目中管理

    实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241   版权声明: https://blog.csdn.net/ShuSheng00 ...

  4. salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)

    本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...

  5. 【开发工具】-- IDEA集成Git在实际项目中的运用

    1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...

  6. Git 在小团队中的管理流程(转)

    目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...

  7. Git 在小团队中的管理流程

    目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...

  8. 两张图让git新手在项目中运用git命令行

    创建分支命令:    git branch (branchname) 切换分支命令:      git checkout (branchname) 当你切换分支的时候,Git 会用该分支的最后提交的快 ...

  9. web项目中的执行流程参数传递详解

    还是从这个图开始讲解: struts2中有一个存放数据的中心:值栈.(值栈里面有map和对象栈) 首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到 ...

随机推荐

  1. [Swift]LeetCode157.用Read4来读取N个字符 $ Read N Characters Given Read4

    The API: int read4(char *buf) reads 4 characters at a time from a file.The return value is the actua ...

  2. [Swift]LeetCode436. 寻找右区间 | Find Right Interval

    Given a set of intervals, for each of the interval i, check if there exists an interval j whose star ...

  3. [Swift]LeetCode966.元音拼写检查器 | Vowel Spellchecker

    Given a wordlist, we want to implement a spellchecker that converts a query word into a correct word ...

  4. PHP算法之斐波那契数列(递归)

    /*斐波那契数列 源代码分析 f(x) = 1 ; 当 x < 2 ; f(x) = f(x-1)+f(x-2); 当 x >= 2 ; 通项式为:fn ={((1+根号5)/2)^n-( ...

  5. H5本地存储sessionStorage和localStorage的区别

    sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...

  6. MVC从Controller到View的呈现

    图说MVC底层运行机制: 当路由机制已经激活Controller并InvokeAction后,如果返回的是View, 则ViewResult基于View呈现的请求响应机制内部借助MVC提供的View引 ...

  7. Python实现UI自动化

    1.   Selenium2 + WebDriver API 2.   unittest单元测试框架 3.   HTMLTestRunner.html测试报告 4.   自动化测试模型介绍 5.    ...

  8. 反射在ADO.NET方面的应用

    本来说通过传统的方式可以很方便的访问数据库不需要用到反射技术,但是为了将反射在ADO.NET中的作用体现出来,特意来试一下改良版的访问方式. ​反射的学习需要一定的时间去理解,我学了有一阵子了,但也不 ...

  9. 知其所以然~分布式事务cap

    背景 一致性是一个抽象的.具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义.在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我.我中有你.浑然一体:而在互联网时代,一致性 ...

  10. springboot+mybatis+dubbo+aop日志终结篇

    之前的几篇文章把dubbo服务层都介绍完毕,本篇文章咱们主要写web层如何调用服务层的方法.文章底部附带源码. 启动服务 服务启动时,会向zk注册自己提供的服务,zk则会记录服务提供者的IP地址以及暴 ...