转自http://zipperary.com/2014/03/19/play-github

1.fork & watch & star

到 github 中某人的某个 repo中,会在右上角看到这样的标签:

  • fork: 把该repo拷贝到自己的账户下,相当于成为自己的rep。不同之处是可以通过pull request和 original 的那个建立联系。
  • watch: 分为三种级别:not watching,watching,ignore.其实就是用来设置提醒的,比如watching,该 repo 有任何 update 都会收到邮件或 github 中的通知;ignore 就是不接收任何通知。
  • star: 可以理解成「收藏」,这个repo的update不会出现在news feed中。在主页通过「star」标签可以查看自己 star 过的 repo。 一般情况下,遇到好的repo想要收藏,就star。想要自己改改、完善一下,可以fork。想追踪它的某些 update,可以 watch。

2.pull request

比如tommy351的 hexo 这个repo,我fork了一下。在我这边修改后,想要告诉tommy351「我完善了一下,你把我修改后的版本合并到你的 repo 吧」,那么我可以向tommy351发送一个pull request。

发送的步骤是:在我这边的 hexo 中,点击右侧的「pull request」,然后「New pull request」,然后查看一下我对 tommy351的 repo 做了哪些改变,确认没错之后,点击「Create pull request」,填写一下说明,即可发送。 tommy351收到我的「pull request」后,如果觉得好,可以 merge,这个就不是我的事了。

3.branch

新建一个 repo,默认的branch 是 master。master 作为主分支,要稳定。我们进行迭代开发时,可以新建一个 branch,在这个 branch 中开发,搞定后再合并到 master 中。这样的流程比较合理。

  • 创建: git branch test,会新建一个 test 分支,并拷贝 master 的内容到这个分支下。
  • 切换: git checkout test 从 master 分支切换到 test 分支。
  • 查看: git branch 看看这个 repo 下有哪些分支了。带星号的为当前分支。
  • 删除本地分支: git branch -d test
  • 删除远端分支: git push origin :test ,注意冒号的意思是删除。

在 test 下的其他操作,如add,commit,push和在 master 下是一样的。 如何合并两个分支呢?

  • 通过git checkout master切换到主分支。
  • 通过git diff test查看这两个分支的不同。

确认无误后,通过git merge test把 test 合并到 master。

4.pull and fetch

这两个操作都是把别处的 repo 拉到这里来,有什么不同嫩?

git pull = git fetch + git merge

比如我目前在我的 hexo 下操作,我想要与 tommy351的 hexo 保持同步。 首先,git add remote upstream 如果他五分钟前对hexo这个 repo 做了更改,我现在执行git fetch upstream ,并git diff upstream/master就可以看到这些变化。 如果我觉得不错,那么通过git merge upstream/master master就可以把他做的更改合并到我的 hexo 下。 okay,到现在为止,在自己 repo 的 master 下的操作,分支操作,与 original的同步和反馈,以及与他人的社交都会了。以后就要尽量多写代码,并用github 管理代码了。