README.md 6.0 KB
Newer Older
C
Chris Wanstrath 已提交
1 2
hub: git + hub = github
=======================
C
readme  
Chris Wanstrath 已提交
3

C
Chris Wanstrath 已提交
4
`hub` is a command line utility which adds GitHub knowledge to `git`.
C
readme  
Chris Wanstrath 已提交
5

C
Chris Wanstrath 已提交
6
It can used on its own or as a `git` wrapper.
C
readme  
Chris Wanstrath 已提交
7

C
Chris Wanstrath 已提交
8
Normal:
C
Chris Wanstrath 已提交
9 10

    $ hub clone rtomayko/tilt
C
tweak  
Chris Wanstrath 已提交
11

12 13
    Expands to:
    $ git clone git://github.com/rtomayko/tilt.git
C
Chris Wanstrath 已提交
14

C
Chris Wanstrath 已提交
15
Wrapping `git`:
C
Chris Wanstrath 已提交
16 17 18

    $ git clone rack/rack

C
tweak  
Chris Wanstrath 已提交
19 20 21
    Expands to:
    $ git clone git://github.com/rack/rack.git

22
hub requires you have `git` installed and in your `$PATH`. It also
C
Chris Wanstrath 已提交
23
requires Ruby 1.8.6+ or Ruby 1.9.1+. No other libraries necessary.
C
tweaks  
Chris Wanstrath 已提交
24

C
readme  
Chris Wanstrath 已提交
25

C
Chris Wanstrath 已提交
26
Install
C
readme  
Chris Wanstrath 已提交
27 28
-------

C
Chris Wanstrath 已提交
29 30
### Standalone

C
tweaks  
Chris Wanstrath 已提交
31
`hub` is most easily installed as a standalone script:
C
Chris Wanstrath 已提交
32

C
Chris Wanstrath 已提交
33 34
    curl -s http://defunkt.github.com/hub/standalone > ~/bin/hub &&
    chmod 755 ~/bin/hub
C
Chris Wanstrath 已提交
35

36
Assuming `~/bin/` is in your `$PATH`, you're ready to roll:
C
Chris Wanstrath 已提交
37

C
Chris Wanstrath 已提交
38 39
    $ hub version
    git version 1.6.4.2
40
    hub version 0.3.2
C
Chris Wanstrath 已提交
41

42 43
### Homebrew

D
defunkt 已提交
44
    brew install hub
45

46
### RubyGems
C
Chris Wanstrath 已提交
47

48
Though not recommended, `hub` can also be installed as a RubyGem:
C
Chris Wanstrath 已提交
49

C
Chris Wanstrath 已提交
50
    $ gem install git-hub
C
Chris Wanstrath 已提交
51 52 53

(Yes, the gem name is `git-hub`.)

54 55 56
(It's not recommended because of the RubyGems startup time. See [this
gist][speed] for information.)

57 58 59 60 61 62 63 64
### Standalone via RubyGems

Yes, the gem name is still `git-hub`:

    $ gem install git-hub
    $ hub hub standalone > ~/bin/hub && chmod 755 ~/bin/hub
    $ gem uninstall git-hub

C
Chris Wanstrath 已提交
65 66
### Source

C
Chris Wanstrath 已提交
67
You can also install from source:
C
readme  
Chris Wanstrath 已提交
68 69 70

    $ git clone git://github.com/defunkt/hub.git
    $ cd hub
71
    $ rake install prefix=/usr/local
C
readme  
Chris Wanstrath 已提交
72 73


C
Chris Wanstrath 已提交
74 75
Aliasing
--------
C
readme  
Chris Wanstrath 已提交
76

C
Chris Wanstrath 已提交
77 78
hub works best when it wraps `git`. This is not dangerous - your
normal git commands should all work. hub merely adds some sugar.
C
readme  
Chris Wanstrath 已提交
79

C
Chris Wanstrath 已提交
80 81
Typing `hub alias <shell>` will display alias instructions for
your shell. `hub alias` alone will show the known shells.
C
readme  
Chris Wanstrath 已提交
82

C
Chris Wanstrath 已提交
83 84 85 86 87 88 89
For example:

    $ hub alias bash
    Run this in your shell to start using `hub` as `git`:
      alias git=hub

You should place this command in your `.bash_profile` or other startup
C
Chris Wanstrath 已提交
90
script to ensure runs on login.
C
Chris Wanstrath 已提交
91 92 93 94

The alias command can also be eval'd directly using the `-s` flag:

    $ eval `hub alias -s bash`
C
tweaks  
Chris Wanstrath 已提交
95

C
readme  
Chris Wanstrath 已提交
96

C
Chris Wanstrath 已提交
97
Commands
C
readme  
Chris Wanstrath 已提交
98 99
--------

C
Chris Wanstrath 已提交
100
Assuming you've aliased `hub` to `git` the following commands now have
C
Chris Wanstrath 已提交
101 102
superpowers:

C
readme  
Chris Wanstrath 已提交
103 104 105
### git clone

    $ git clone schacon/ticgit
C
Chris Wanstrath 已提交
106 107
    > git clone git://github.com/schacon/ticgit.git

C
readme  
Chris Wanstrath 已提交
108
    $ git clone -p schacon/ticgit
C
Chris Wanstrath 已提交
109
    > git clone git@github.com:schacon/ticgit.git
C
readme  
Chris Wanstrath 已提交
110

111 112 113 114 115 116
    $ git clone resque
    > git clone git://github.com/YOUR_USER/resque.git

    $ git clone -p resque
    > git clone git@github.com:YOUR_USER/resque.git

C
readme  
Chris Wanstrath 已提交
117 118 119
### git remote add

    $ git remote add rtomayko
C
Chris Wanstrath 已提交
120 121
    > git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git

K
Konstantin Haase 已提交
122
    $ git remote add -p rtomayko
C
Chris Wanstrath 已提交
123
    > git remote add rtomayko git@github.com:rtomayko/CURRENT_REPO.git
C
readme  
Chris Wanstrath 已提交
124

125 126 127
    $ git remote add origin
    > git remote add origin git://github.com/YOUR_USER/CURRENT_REPO.git

128 129 130 131
### git fork

    $ git fork
    ... hardcore forking action ...
C
Chris Wanstrath 已提交
132
    > git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git
133

C
Chris Wanstrath 已提交
134 135 136
Forks the original repo on GitHub and adds the new remote under your
username. It requires your GitHub token to be present; see "GitHub
login" below for details.
137

C
readme  
Chris Wanstrath 已提交
138 139
### git init

C
Chris Wanstrath 已提交
140
    $ git init -g
C
Chris Wanstrath 已提交
141
    > git init
142
    > git remote add origin git@github.com:YOUR_USER/REPO.git
C
Chris Wanstrath 已提交
143

144 145 146 147 148 149 150
### git push

    $ git push origin,staging,qa bert_timeout
    > git push origin bert_timeout
    > git push staging bert_timeout
    > git push qa bert_timeout

151 152
### git browse

153 154 155
    $ git browse
    > open http://github.com/CURRENT_REPO

156 157 158 159 160 161 162 163 164 165 166 167
    $ git browse schacon/ticgit
    > open http://github.com/schacon/ticgit

    $ git browse -p schacon/ticgit
    > open http://github.com/schacon/ticgit

    $ git browse resque
    > open http://github.com/YOUR_USER/resque

    $ git browse -p resque
    > open https://github.com:YOUR_USER/resque

J
Joshua Roesslein 已提交
168 169 170 171 172 173 174 175 176 177 178 179 180 181
### git compare

    $ git compare refactor
    > open http://github.com/CURRENT_REPO/compare/refactor

    $ git compare 1.0...1.1
    > open http://github.com/CURRENT_REPO/compare/1.0...1.1

    $ git compare -u fix
    > (http://github.com/CURRENT_REPO/compare/fix)

    $ git compare myfork patch
    > open http://github.com/myfork/compare/patch

C
Chris Wanstrath 已提交
182 183 184 185
### git help

    $ git help
    > (improved git help)
C
Chris Wanstrath 已提交
186 187
    $ git help hub
    > (hub man page)
C
readme  
Chris Wanstrath 已提交
188 189


C
Chris Wanstrath 已提交
190 191 192 193 194 195 196 197 198 199 200 201
GitHub Login
------------

To get the most out of `hub`, you'll want to ensure your GitHub login
is stored locally in your Git config.

To test it run this:

    $ git config --global github.user

If you see nothing, you need to set the config setting:

C
Chris Wanstrath 已提交
202
    $ git config --global github.user YOUR_USER
C
Chris Wanstrath 已提交
203

204 205
For commands that require write access to GitHub (such as `fork`), you'll want to
setup "github.token" as well. See [local GitHub config guide][2] for more information.
C
Chris Wanstrath 已提交
206 207


C
Chris Wanstrath 已提交
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
Configuration
-------------

If you prefer `http://` clones to `git://` clones, you can set the
`hub.http-clone` option using `git-config`.

For example:

    $ git clone defunkt/repl
    < git clone >
    $ git config --global --add hub.http-clone yes
    $ git clone defunkt/repl
    < http clone >

Or you can enter this manually into your `~/.gitconfig` file:

    $ cat ~/.gitconfig
    [hub]
      http-clone = yes


C
Chris Wanstrath 已提交
229
Prior Art
C
readme  
Chris Wanstrath 已提交
230 231 232 233 234 235 236 237 238 239
---------

These projects also aim to either improve git or make interacting with
GitHub simpler:

* [eg](http://www.gnome.org/~newren/eg/)
* [github-gem](http://github.com/defunkt/github-gem)
* [gh](http://github.com/visionmedia/gh)


C
Chris Wanstrath 已提交
240 241 242 243 244 245 246 247 248 249 250 251
Contributing
------------

Once you've made your great commits:

1. [Fork][0] hub
2. Create a topic branch - `git checkout -b my_branch`
3. Push to your branch - `git push origin my_branch`
4. Create an [Issue][1] with a link to your branch
5. That's it!


C
Chris Wanstrath 已提交
252 253
Meta
----
C
readme  
Chris Wanstrath 已提交
254

C
Chris Wanstrath 已提交
255 256 257 258
* Code: `git clone git://github.com/defunkt/hub.git`
* Home: <http://github.com/defunkt/hub>
* Bugs: <http://github.com/defunkt/hub/issues>
* List: <http://groups.google.com/group/github>
C
Chris Wanstrath 已提交
259 260
* Test: <http://runcoderun.com/defunkt/hub>
* Gems: <http://gemcutter.org/gems/git-hub>
C
Chris Wanstrath 已提交
261 262 263 264 265 266 267 268 269


Author
------

Chris Wanstrath :: chris@ozmm.org :: @defunkt

[0]: http://help.github.com/forking/
[1]: http://github.com/defunkt/hub/issues
270
[speed]: http://gist.github.com/284823
271
[2]: http://github.com/guides/local-github-config