Git的基本使用及基本流程(平台为GitHub)

注意事项:文章里面很多 - - 系统自动把他合成–了,操作时请注意。

一、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 认证信息,输入如下代码,一路回车:
    juwankui@ubuntu:~/workspace$ ssh-keygen -t rsa -b 4096 -C youremail@example.com
    完成后进入到存储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创建你自己的开发分支

此处再次重申,创建你自己的开发分支一定要以develop为基础。
我们通过git checkout -b feature/2来创建属于我们自己的第一个开发分支(develop开发分支属于大家的),其中“feature”一般为约定俗成的名字,“2”为项目组为你分配的Issues号码,如下图,暂时我们不管Issues操作,只需要知道你任务分支的编码就可。
这里写图片描述
这里写图片描述

6. 进行你该干的事情吧

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

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

(1) 新增或修改完内容后通过git status查看一下本地版本库状态
这里写图片描述
(2) 按照提示,执行git add . (不要忘记后面的”.”哦) 添加当前工作目录文件到暂存区,如果想从暂存区回退到工作目录,可以使用git reset,参考下图
这里写图片描述
(3) 执行git commit –m ‘close #2’命令将暂存区内容添加到本地仓库,close #2为约定俗成的,即关闭我们当前分支的任务,这只是一个说明代表我们完成了该分支,如果关闭需要进行其他动作,在这,我需要说明一下commit提交方式,git commit -m ‘close #your branch number’①每次使用该语句都会在本地生成一份commit信息,可以通过git log 查看, git commit –amend –no-edit②使用该语句不会创建新的commit信息,会在上一个commit基础上进行覆盖提交,当然,这些commit信息会随着后续push操作,将commit信息随着版本分支一同上传到远程repository,所以要根据自身项目情况决定(通常是第一次commit执行①,以后commit执行②):
这里写图片描述

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后面的一长串字符)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页