“Github”里的“hub”改用Go语言开发

刚刚过去的2014年是Go语言重要的一年,不仅版本升级到了1.4,而且Go语言的集成开发环境LiteIDE也发布了x26,还在云计算方便吸引力不是的注意力。虽然有很多程序员不喜欢Go语言,但每种语言都有直接的缺点和优点,这是很正常的事情。最重要的是取之长、补己短。最近github宣布使用Go1.4重新开发了hub命令,就是要利用Go语言的长处。

成都创新互联是专业的网站建设公司,提供网站建设,网站制作,网站设计等网站开发一体化解决方案;包括H5开发,微信小程序定制开发,网站定制,企业网站建设,商城网站开发,响应式网站开发,建网站,PHP网站建设,软件开发,软文发布平台,网站营销。欢迎做网站的企业前来合作洽谈,成都创新互联将竭诚为您服务!

Github是世界上最大的代码托管服务,它是在于最近几年迅速超过了SoruceForge,很大程度上得益于Linux创始人Linus的影响力,和Git中去中心化的思想。相信很多人都使用过git和github,但估计很少人知道这个等式:git + hub = github,hub是一个用来封装git的工具,为其扩展更多的功能和特性,是GitHub运行起来更加快捷方便。

 
 
  1. $ hub clone rtomayko/tilt
  2. # expands to:
  3. $ git clone git://github.com/rtomayko/tilt.git

hub命令的最佳使用方法是当作git的别名,这样,当你输入$ git  时,你不仅能获得git的所有功能,而且能增添很多附加特性。设置别名的方法是在你的.bash_profile文件放置下一行代码:

 
 
  1. eval "$(hub alias -s)"

从2.2.0版本开始,hub开始改用Go语言开发,主要原因是Go语言的高效。要想从源代码安装hub 2.x版本,你需要有一个Go语言开发环境,版本要在1.4以上:

 
 
  1. $ git clone https://github.com/github/hub.git
  2. $ cd hub
  3. $ ./script/build
  4. $ cp hub YOUR_BIN_PATH

hub2.x版本将对1.x版本保持最大的兼容。下面我里看一下hub命令提供了哪些额外的强大功能。

(下面这些代码中假设你已经做了git别名设置)

git clone

 
 
  1. $ git clone schacon/ticgit
  2. > git clone git://github.com/schacon/ticgit.git
  3. $ git clone -p schacon/ticgit
  4. > git clone git@github.com:schacon/ticgit.git
  5. $ git clone resque
  6. > git clone git@github.com/YOUR_USER/resque.git

git remote add

 
 
  1. $ git remote add rtomayko
  2. > git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git
  3. $ git remote add -p rtomayko
  4. > git remote add rtomayko git@github.com:rtomayko/CURRENT_REPO.git
  5. $ git remote add origin
  6. > git remote add origin git://github.com/YOUR_USER/CURRENT_REPO.git

git fetch

 
 
  1. $ git fetch mislav
  2. > git remote add mislav git://github.com/mislav/REPO.git
  3. > git fetch mislav
  4. $ git fetch mislav,xoebus
  5. > git remote add mislav ...
  6. > git remote add xoebus ...
  7. > git fetch --multiple mislav xoebus

git cherry-pick

 
 
  1. $ git cherry-pick http://github.com/mislav/REPO/commit/SHA
  2. > git remote add -f mislav git://github.com/mislav/REPO.git
  3. > git cherry-pick SHA
  4. $ git cherry-pick mislav@SHA
  5. > git remote add -f mislav git://github.com/mislav/CURRENT_REPO.git
  6. > git cherry-pick SHA
  7. $ git cherry-pick mislav@SHA
  8. > git fetch mislav
  9. > git cherry-pick SHA

git am, git apply

 
 
  1. $ git am https://github.com/defunkt/hub/pull/55
  2. [ downloads patch via API ]
  3. > git am /tmp/55.patch
  4. $ git am --ignore-whitespace https://github.com/davidbalbert/hub/commit/fdb9921
  5. [ downloads patch via API ]
  6. > git am --ignore-whitespace /tmp/fdb9921.patch
  7. $ git apply https://gist.github.com/8da7fb575debd88c54cf
  8. [ downloads patch via API ]
  9. > git apply /tmp/gist-8da7fb575debd88c54cf.txt

git fork

 
 
  1. $ git fork
  2. [ repo forked on GitHub ]
  3. > git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git

git pull-request

 
 
  1. # while on a topic branch called "feature":
  2. $ git pull-request
  3. [ opens text editor to edit title & body for the request ]
  4. [ opened pull request on GitHub for "YOUR_USER:feature" ]
  5. # explicit title, pull base & head:
  6. $ git pull-request -m "Implemented feature X" -b defunkt:master -h mislav:feature

git checkout

 
 
  1. $ git checkout https://github.com/defunkt/hub/pull/73
  2. > git remote add -f -t feature mislav git://github.com/mislav/hub.git
  3. > git checkout --track -B mislav-feature mislav/feature
  4. $ git checkout https://github.com/defunkt/hub/pull/73 custom-branch-name

git merge

 
 
  1. $ git merge https://github.com/defunkt/hub/pull/73
  2. > git fetch git://github.com/mislav/hub.git +refs/heads/feature:refs/remotes/mislav/feature
  3. > git merge mislav/feature --no-ff -m 'Merge pull request #73 from mislav/feature...'

git create

 
 
  1. $ git create
  2. [ repo created on GitHub ]
  3. > git remote add origin git@github.com:YOUR_USER/CURRENT_REPO.git
  4. # with description:
  5. $ git create -d 'It shall be mine, all mine!'
  6. $ git create recipes
  7. [ repo created on GitHub ]
  8. > git remote add origin git@github.com:YOUR_USER/recipes.git
  9. $ git create sinatra/recipes
  10. [ repo created in GitHub organization ]
  11. > git remote add origin git@github.com:sinatra/recipes.git

git init

 
 
  1. $ git init -g
  2. > git init
  3. > git remote add origin git@github.com:YOUR_USER/REPO.git

git push

 
 
  1. $ git push origin,staging,qa bert_timeout
  2. > git push origin bert_timeout
  3. > git push staging bert_timeout
  4. > git push qa bert_timeout

git browse

 
 
  1. $ git browse
  2. > open https://github.com/YOUR_USER/CURRENT_REPO
  3. $ git browse -- commit/SHA
  4. > open https://github.com/YOUR_USER/CURRENT_REPO/commit/SHA
  5. $ git browse -- issues
  6. > open https://github.com/YOUR_USER/CURRENT_REPO/issues
  7. $ git browse -- issues/10
  8. > open https://github.com/YOUR_USER/CURRENT_REPO/issues/10
  9. $ git browse schacon/ticgit
  10. > open https://github.com/schacon/ticgit
  11. $ git browse schacon/ticgit commit/SHA
  12. > open https://github.com/schacon/ticgit/commit/SHA
  13. $ git browse resque
  14. > open https://github.com/YOUR_USER/resque
  15. $ git browse resque network
  16. > open https://github.com/YOUR_USER/resque/network

git compare

 
 
  1. $ git compare refactor
  2. > open https://github.com/CURRENT_REPO/compare/refactor
  3. $ git compare 1.0..1.1
  4. > open https://github.com/CURRENT_REPO/compare/1.0...1.1
  5. $ git compare -u fix
  6. > (https://github.com/CURRENT_REPO/compare/fix)
  7. $ git compare other-user patch
  8. > open https://github.com/other-user/REPO/compare/patch

git submodule

 
 
  1. $ git submodule add wycats/bundler vendor/bundler
  2. > git submodule add git://github.com/wycats/bundler.git vendor/bundler
  3. $ git submodule add -p wycats/bundler vendor/bundler
  4. > git submodule add git@github.com:wycats/bundler.git vendor/bundler
  5. $ git submodule add -b ryppl --name pip ryppl/pip vendor/pip
  6. > git submodule add -b ryppl --name pip git://github.com/ryppl/pip.git vendor/pip

git ci-status

 
 
  1. $ git ci-status [commit]
  2. > (prints CI state of commit and exits with appropriate code)
  3. > One of: success (0), error (1), failure (1), pending (2), no status (3)

git help

 
 
  1. $ git help
  2. > (improved git help)
  3. $ git help hub
  4. > (hub man page)

本文题目:“Github”里的“hub”改用Go语言开发
网页路径:http://www.shufengxianlan.com/qtweb/news35/485485.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联