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 [email protected]: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后面的

猜你喜欢

转载自www.cnblogs.com/GreenForestQuan/p/9063804.html