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

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/brucexiajun/p/9815729.html
Copyright © 2011-2022 走看看