zoukankan      html  css  js  c++  java
  • 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 冲突不知道怎么处理的情况下,和与你冲突的同事商量,不能随便冲掉别人的代码

  • 相关阅读:
    BZOJ3899 仙人掌树的同构(圆方树+哈希)
    BZOJ3590 SNOI2013Quare(状压dp)
    BZOJ2178 圆的面积并(simpson积分)
    BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)
    BZOJ3589 动态树(树链剖分+容斥原理)
    BZOJ3453 XLkxc(拉格朗日插值)
    BZOJ4650 NOI2016优秀的拆分(后缀数组)
    Luogu5058 ZJOI2004嗅探器(割点)
    shutil模块---文件,文件夹复制、删除、压缩等处理
    面向过程---通过查找字符串,找到相应的文件路径
  • 原文地址:https://www.cnblogs.com/brucexiajun/p/9815729.html
Copyright © 2011-2022 走看看