Github使用指南

 Github在程序界的应用已蔚然成风,讲解如何使用Github的博客和书籍也都很多,但大多讲的很复杂,看了似懂非懂。使用Github的流程总结起来如下:

1. Objective(目的),为什么我们要使用Github,总结起来有如下几个重要的原因:(1)大牛们都在用,而且几乎所有优秀的开源项目如今都转用Github进行托管,为了获取资源,学习使用Github具有必需性。(2)可以协同合作一个项目,Github可以支持多人远程协同开发,且支持离线修改,只是这种修改是先暂存在本地,等连接到网络时,我们便可以提交我们所作出的所有修改。这是Github胜过之前所有版本控制软件的优势。

 

2. 基本概念:Git有三个状态,modified(已修改),staged(已暂存),committed(已递交)。已修改表示修改了文件,但还没保存到本地仓库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照(snapshot)中。以提交表示数据已经安全地保存在了本地仓存中。

Github的stage(暂存区)是一个很新颖却又让很多人迷惑的概念。对它的讨论也很多。总结起来引入暂存区有这么几个优点:1.分批,分阶段提交,降低commit颗粒度 2.进行快照,便于回退到之前的各个中间版本状态  3. 有点类似于缓存区的概念,有利于提醒用户在commit之前,再做进一步的确认。

 

3. Procedure(Git使用流程):

     基于你已经在PC端安装好git工作环境,并配置好用户名和邮箱的前提下,我们该如何将我们的项目文件托管到Github服务器端呢?

    1).  先选一个地方创建一个新的项目文件夹(repository),再在这个文件夹中初始化一个git本地仓库。命令如下:

        $mkdir foldername  //创建一个新的项目文件夹

        $git init      //初始化git本地仓库

       或者直接从Github上克隆一个我们喜欢的项目到本地,再做进一步的修改。命令如下:

        $git clone https://github.com/username/foldername.git

       这时可以不需要初始化本地仓库,因为克隆下来的项目文件中,已经包含了git仓库信息,都在.git隐藏文件夹吧,一般不要修改该文件夹中的文件内容

 

    2) . 将需要跟踪变化状态的文件加入暂存区(stage)中,不需要跟踪的文件,可以不用添加。命令如下:

       $git add/stage filename1 filename2......

        或者git add .  可以将当前目录下的所有文件加入到暂存区中

        关于此处的git add 和git stage,这两个命令其实是等价的,一般的书本和教程上都是使用git add,这里推荐使用git stage,因为更好理解,将文件加入暂存区(stage)嘛

 

    3). 如果我们操作失误,或者后悔了,不想将某些文件加入到暂存区中,则可以将其撤回到工作区,命令如下:

       $git reset HEAD  filename

 

    4). 接下来将本次的修改递交(commit)到本地仓库中。命令如下:

       $git commit -m  ”modification“     //-m 参数代表了message(信息),后面的参数modification,用此次修改的详细内容替换之。

 

    5). 如果我们能够连接到网络,就需要将我们本地仓存中所有的修改,上传到github的仓存中。命令如下:

       $git remote add origin https://github.com/username/foldername.git  //连接到github服务器端想要上传的文件夹,并赋予一个origin的别名

       $git pull origin master                  //先将云端文件夹中的变动同步下来(第一次上传的时候,必须要有这一步,不然不能进行下一步的上传工作)

       $git push -u origin master            //这里的-u值得是 upstream(上传流),将本地仓库中的所有commit推送到github云端。

     截止目前,如果一切顺利,那么我们便成功的将我们的项目文件夹托管到了github服务器上,之后每次修改,stage一下被修改的文件,再commit并同步到云端即可

 

别的一些有用的小指令:

    6). $git log 查看所有的历史commit。

    7). $git status 查看文件夹中的文件状态(unstaged,staged but not commited, commited)

    8). $git diff 查看工作区和stage区文件的不同

    9). $git diff HEAD/--staged 查看stage区和commited状态的文件的不同

  10). $git config username 可以查看本地git的用户名

  11). $git config useremail 可以查看本地git的用户邮箱

  12). 使用git diff命令后,git bash一直显示比较文件的页面,怎么退出来呢? 输入 q 就可以退出了。

 

 

********************branch(分支)**********************

branch在github中是一个很重要的概念,我们可以创建一个新的分支,在这个新的分支上,实现我们的新功能或者debug,又可以保证不会影响到主枝干,如果功能实现或者debug成功,我们就将新分支合并到主分支上,如果开发失败或者这个分支失去了存在的意义,我们便可以删除该分支,这样保证主枝干的整洁。

    1). $git branch test_branch //创建一个新的分支,其名为test_branch
    2). $git checkout test_branch //切换到test_branch
    3). $git branch -m renamed_branch //重命名为renamed_branch
    4). $git branch -D/-d test_branch //删除test_branch
为了将新分支合并到主分支上,我们可以进行下面的操作:
    5). $git checkout master //切换到主分支
    6). $git merge new_feature //合并

 

********************分割线*****************************

写累了,对branch和HEAD头指针已经pull request等功能的更深入的讨论,下次再继续写

 

posted @ 2016-01-27 06:45  雨落无声2002  阅读(450)  评论(0编辑  收藏  举报