Swift开发工具使用Android studio编程

GitHub正确打开方式-协同项目

2016-05-24  本文已影响1456人  kinlam

Github可以免费帮我们托管项目,方便我们对版本的控制

远程仓库

在上一篇文章-GitHub 快速入门-Git教程中我已经介绍了Git的基本使用方法。接下来我们就开始远程仓库之旅了,首先我们在GitHub上创建一个远程仓库,然后把远程仓库和本地仓库关联起来,连接的方式有很多,可以参考书籍《Pro Git》中的介绍,其中用的最多的是SSH协议,和Http/S协议。其中两者的区别是,SSH通过配置SSH key来连接远程仓库,并且每次可以不输入密码,传输效率高。Https方式的话,可以直接从远程仓库clone项目到本地,但每次要输入密码,方便使用但麻烦,所以我们直接用SSH的方式。

  1. 接着我们打开GitHub页面,在你的账户里面设置你的SSH key,点击setting->SSH and GPG keys,把公匙里面的长窜码添加进去,再取个名字就行了。


  1. 远程仓库与本地仓库的关联,执行以下命令:

       $ git remote add origin 
         git@github.com:JIANLAM/Plants-vs.Zombies.git
    

    上面的命令可以看成$ git remote add 远程仓库名 SSH:url,远程仓库名是本地对远程端的一个命名,SSH地址在我们创建完远程仓库后,在GitHub的页面可以获得该地址。

  2. 把项目传送到远程仓库去(这里我上传一个植物大战僵尸的游戏)

         git push -u origin master
    

    这句命令就是把东西推送到远程仓库的master分支上,按英译中,很容易明白。那这个-u是什么意思呢?

    So,What exactly does the "u" do?

    Git官网 的说法是:

         For every branch that is up to date or successfully pushed, 
         add upstream  (tracking) reference, used by argument-less  
         git-pull[1] and other commands.
    

    对于每一个更新了或推送成功的分支,添加一个追踪的参考源。好,大概明白,我们再来看看国外论坛Stack Overflow一位朋友的回答:

      The key is "argument-less git-pull". When you do a git pull from a branch, 
      without specifying a source remote or branch, git looks at the 
      branch.<name>.merge setting to know where to pull from. git push -u sets this
      information for the branch you're pushing.
    

    这个解释就有点像http协议是无状态的,不记录传输的信息,服务器端给客户端传一个cookie值,客户端保留cookie之后,下一次向服务器端获取东西的时候,就知道是哪个服务器了。我们给远程端一个-u标示,下一次想从远程仓库拉取消息的时候,系统就知道具体是从谁那拉取消息过来了。

    可以试着不加-u看看效果如何:

     $ git push origin master
     $ git pull
     You asked me to pull without telling me which branch you want to merge with, and 'branch.test.merge' in
     your configuration file does not tell me, either. Please
     specify which branch you want to use on the command line and
     try again (e.g. 'git pull <repository>  <refspec>').
     See git-pull(1) for details.
    它说你并没有告诉我你想要合并的分支是哪个,配置文件也没有说明,请特殊化你的分支然后再试一次。之所以大费周章的说明这个-u,就是想再次告诉大家,遇到不懂得地方,如何自己弄明白它,学会自己查阅并参考一些国外的资料,是最快进步的方法。
    
  3. 拉取,下载,推送

    克隆即下载,从远程仓库中下载项目到本地

        $ git clone SSH:url
    

    每次有更新就通过该方式推送到远程端。

        $ git push 远程仓库 远程仓库分支
    

    在协同项目中,我们是一起完成一个任务的,即多人从远程仓库中获取项目,提交项目。如果远程端和自己的本地版本不同的时候,我们可用fetch,来更新自己本地没有的东西:

       $ git fetch origin master
    

可以用pull,从远程仓库中获取最新的版本:

       $ git pull origin master
  1. 第一部分
    左边显示项目名,右边有3个tab,分别是Watch,Star,Fork.
    watch就是关注项目的动态,只要一有更新,就会马上通知你。Star 即收藏,喜欢的功能。Fork顾名思义分叉,即拷贝一个到自己的账户中变成自己的项目。

  2. 第二部分
    <>Code即为当前的项目代码。Issues 就是你需要别人帮助的问题,你可以再这里提出来,请求别人帮助你一起完成。比如在我提交的这个项目中,还没有设计太阳花的代码,但是我又不知道从何下手,这个时候我就可以询问别人,在new issues里填写我的问题,旁边还有对应问题分类的标签,帮助我们区别。这里太阳花应该是个扩展的功能,所以我选择enhancement。


    pull requests 你可以请求作者是否合并你做出的修改,如果项目作者同意了,你就为了项目的贡献者了。Wiki即为你的项目展示,你可以在这里说明并介绍你的项目。 Graphs是贡献与时间的分析图表,Setting顾名思义对项目的设置。
  3. 第三部分
    可以说是个性签名,一句话介绍你的项目,右边Edit可以编辑。

  4. 第四部分

    commits这个非常熟悉了,提交的记录都在这里。 branch 分支,release
    最终发布给用户的版本。 contributor 对该项目的贡献者。

  5. 第五部分

    最右的Branch:Master 我们可以选择分支,创建分支,还可以设置标签。

New pull requests 可以比较不同分支的差异。最右的就是下载项目到本地了。

  1. 下载与安装

    Simple collaboration from your desktop

  2. 界面介绍


    咋一看界面,还是有不少熟悉的地方,现在已经不那么陌生了对吗。首先左边GitHUb下面的一列都是我已经clone也就是下载到本地的项目。上面的Y字图案master我们也很熟悉了,就是主分支嘛,下拉的时候还能选择其他的分支。最右边的pull request已经说了,就是请求合并到主分支的跟新,隔壁还有个设置,可以自行研究。下面黑色的我们也熟悉啊,在上一篇的Git的使用中,我们画了许多图,特别是在分支那块,用图形描述了代码的交互,这里其实就是帮我们画图了,告诉我们在什么分支上做了什么。接下来让我们动态来看看都是怎么使用的。

  3. clone下载

    一般的对于自己感兴趣的项目(fork它之后),或是已经上传到自己账户的项目。我们都会在加号的clone的下面看到。

点击想要下载的项目,并选择好存放的项目之后,我们就可以在刚刚的GitHub列表看到它了。
  1. 提交,协同

    这里我选择植物大战僵尸这个项目,并且决定添加一个太阳花的实现方法。用自己熟悉的编译器编译好这个代码之后。我们立刻发现仓库提醒我们有了改变,我们在左下角添加Summary标签描述,并提交。其实就是对应我们命令操作 &git commit -m""想起来了吗。


    在我门的History中我们其实相当于用了命令 &git diff,查看自己究竟做了哪些修改。减号是修改前,加号为修改后。
    [站外图片上传中……(12)]
    检查没有什么错误之后,最后只要在按一个Sync同步按钮,大功告成!我们的修改就协同到远程仓库了,我们去网页上看看是否真的上传了。
    [站外图片上传中……(13)]
    果然成功了,这里顺便推荐一个Chrome的插件,名叫Octotree是一个可以分级显示我们项目文件的开源项目。
5.分支
   如果你要在分支上完成任务,确定妥当之后再合并到主分支上,聪明的你当然知道,在Y型图标中创建一个分支叫dev,然后切换到该分支中进行修改提交(相当于`&git checkout -b dev`)现在我随便做一个修改并且提交:
   ![](http://upload-images.jianshu.io/upload_images/1887988-396cd64778582863.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
   由图我们可以看到Master分支下面多了一个dev分支,并且从Master分支连接到了dev分支,同时也确实进行了修改。如果我觉得确实这个修改非常好,决定引入到我的主分支中。可以点击**pull request**

然后可以向主分支提出合并的请求,这里就非常形象了,我们看到刚刚停留在dev的线立马呈现上升的趋势了。发送之后我们只需切回到主分支接受这个请求就可以啦。要注意的是dev分支修改若不合并,当然不会影响主分支的内容。如果没有需要了,我们还可以设置中手动删除这个分支。

下面有一个博客连接,那个也是用GitHub与Hexo开源框架搭建而成的哦,有兴趣的朋友可以去玩玩看!

GitHub: https://github.com/JIANLAM

新浪微博: http://weibo.com/fc7jian

原文地址博客: http://jianlam.github.io/

上一篇下一篇

猜你喜欢

热点阅读