zoukankan      html  css  js  c++  java
  • git 常规发布流程

    一、Git基本概念

    1. Git是分布式的版本管理系统,每台机器都可以基于远程中心服务器拥有自己的版本,如图: 
      这里写图片描述
    2. 远程中心服务器一般叫做Origin repository。
    3. 下面来看一下本地计算机包含哪些内容,图片来自于Git官网,包含三个区域: 
      (1) 工作目录(working Directory):我们肉眼能够看到的目录及相应的文件; 
      (2) 暂存区(Staging Area,也有叫Index):中间过渡区域,可以通过git add命令将工作目录文件放入该区域; 
      (3) 版本库(Repository):存放版本、分支、Commits的相关信息,通过git commit命令将Staging Area区域的内容放在版本库中;版本库的信息以文件的形式存放在工作目录下的.git隐藏文件夹中; 
      这里写图片描述
    4. 命令集关系,图片来源于http://www.ruanyifeng.com/blog/2014/06/git_remote.html 
      这里写图片描述

    二、Git前期准备

    1. 找到GitHub中项目地址,点击Clone or download按钮,获取Clone地址
    2. 由于Clone是通过SSH进行传送的,所以需要生成你机器的认证信息,生成SSH 认证信息,输入如下代码,一路回车: 

      完成后进入到存储key的文件: 
      cat ~/.ssh/id_rsa.pub 
      copy public key,放在GitHub – setting – SSH and GPG keys
    3. 开始Clone,clone前先确认项目存放位置,并进入到相应目录: 
      juwankui@ubuntu:~/workspace$ git clone git@github.com:wankuiju/hello-world.git 
      进行clone时会提示如下信息,输入yes, 
      这里写图片描述
    4. 项目clone完成后,自动创建项目文件夹,我们现在先进入到项目目录: 
      cd hello-world 
      通过ls –al 可以看到项目目录下存在一个.git的隐藏文件夹,就是我们刚才提到的用于存放当前工作空间的版本信息。

    三、不涉及到协作、分支等因素的纯练习内容(不可用于实际项目)

    1. 只有在项目第一次从远端下载到本地计算机时才采用clone方式,在后面我会介绍,项目已经存在的情况下,如何根据派发下来的任务进行分支相关的操作,这次暂且不说;
    2. 在当前项目目录下新增一个文件名为test_add的文件,此时我们先不碰触远程版本库,只在本地计算机内玩耍,那么如下图: 
      这里写图片描述 
      拿刚才我们新建的test_add文件为例来看一下,文件创建完成后: 
      (1) git status看一下本地文件状态,其实git的说明已经非常清晰明了,平时如果出现问题认真看提示说明,就能解决一些问题,如下图告诉我们这个新文件还没有被track,就是没有和版本产生关系,可以通过git add filename,我一般使用 git add .来操作当前目录下所有文件: 
      这里写图片描述 
      (2) git add 将test_add纳入版本跟踪,随后再次git status,如下图,文件已经进入staging area: 
      这里写图片描述 
      (3) git commit 将test_add纳入本地版本库,随后执行git status 查看状态 
      这里写图片描述
      可以看到由于我的本地计算机第一次使用git commit,所以提示需要设置邮箱和用户名(来至GitHub注册信息),按照提示操作,替换成你的信息即可: 
      这里写图片描述
      (4) 到此,我们在本地玩的很痛快,下一步就需要和远程仓库进行交互了,通过git push将你的版本信息提交到远程仓库(origin repository),我们当前操作的是master分支,一般开发过程中不会直接操作master的。 
      这里写图片描述

    四、 模仿实际项目的操作

    假设我们已经根据上一章的clone方法,将远程仓库(origin repository)中的项目下载本地(默认clone远程的master分支),还有一点需要注意,我们一般不会直接在master主分支上进行项目操作,那怎么办,可以在远程仓库中基于master分支建立一个develop分支,用于开发工作。

    1. git branch –all 查看分支

    查看远程版本库和本地版本库中的分支信息,目前我本地只有一个分支,分支前面的“*”代表本地当前分支,远程仓库有两个分支,并且远程仓库当前分支为origin/master(即 远程仓库中的/master分支): 
    这里写图片描述

    2. git branch develop创建develop分支

    这里写图片描述

    3. git checkout develop切换到develop分支

    我们一般使用git checkout –b develop 一条语句来实现创建和切换到指定分支的操作,此处是为了演示。 
    这里写图片描述

    4. 保证本地develop分支最新

    通过执行git fetch(从远程仓库中拉取所有分支信息到本地),git rebase origin/develop(将拉取的origin/develop的内容合并到本地当前分支),这样就保证当前分支develop同步于远程分支。

    5. 基于本地develop创建你自己的开发分支

    6. 进行你该干的事情吧

    真正属于我们的开发分支已经创建完了,现在你可以为所欲为的修改你的代码了。

    7. 将你修改的内容提交到本地版本库

    8. 再次保证你当前分支版本为最新的

    通过执行git fetch -p(从远程仓库中拉取所有分支信息到本地,-p就会在本地删除远程已经删除的分支),git rebase origin/develop(将拉取的origin/develop的内容合并到本地当前分支),这样就保证当前分支同步于远程develop分支。

    9. 将你的分支提交到远程仓库

    通过执行git push origin feature/2将此分支提交到远程仓库,如果已经提交过,在保证你的版本库最新的情况下执行git push origin feature/2 –f 
    这里写图片描述

    10. 将远程仓库中你的分支合并到远程仓库的develop中(origin/develop)

    一般由管理员或开发经理负责,统一在github上进行操作。

    11. 解决冲突

    如果远程仓库的develop分支和我们修改了同一个文件,在调用git rebase origin/develop 
    命令时就会存在冲突的情况,如下图 
    这里写图片描述
    (1) 找到冲突文件,并删除冲突内容,主要是<<<<,==== ,>>>>三行的内容 
    这里写图片描述
    (2) 执行git add . 命令 
    (3) 执行git rebase –continue

    12. 如何用本地版本库文件覆盖工作目录文件

    git checkout – bad_filename 可以指定分支,默认为当前分支

    13. 将commit到本地版本库的内容撤销

    通过git log找到要退回的sha(commit后面的一长串字符),记住一定是要退回的sha,不是当前的sha,执行git reset sha(commit后面的

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读!

  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/GreenForestQuan/p/9063804.html
Copyright © 2011-2022 走看看