3 # This file, hub, is generated code. 
   4 # Please DO NOT EDIT or send patches for it. 
   6 # Please take a look at the source from 
   7 # http://github.com/defunkt/hub 
   8 # and submit patches against the individual files 
  14     attr_accessor 
:executable 
  18       @executable = ENV["GIT"] || "git" 
  21       @original_args = args
.first
 
  25     def after(cmd_or_args 
= nil, args 
= nil, &block
) 
  26       @chain.insert(-1, normalize_callback(cmd_or_args
, args
, block
)) 
  29     def before(cmd_or_args 
= nil, args 
= nil, &block
) 
  30       @chain.insert(@chain.index(nil), normalize_callback(cmd_or_args
, args
, block
)) 
  39       chain
[chain
.index(nil)] = self.to_exec
 
  51     def to_exec(args 
= self) 
  52       Array(executable
) + args
 
  56       reject 
{ |arg
| arg
.index('-') == 0 } 
  64       chained
? or self !
= @original_args 
  68       pattern 
= flags
.flatten
.map 
{ |f
| Regexp
.escape(f
) }.join('|') 
  69       !
grep(/^#{pattern}(?:=|$)/).empty
? 
  74     def normalize_callback(cmd_or_args
, args
, block
) 
  78         [cmd_or_args
].concat args
 
  79       elsif Array 
=== cmd_or_args
 
  80         self.to_exec cmd_or_args
 
  84         raise ArgumentError
, "command or block required" 
  93     instance_methods
.each 
{ |m
| undef_method(m
) unless m 
=~ 
/(^__|send|to\?$)/ } 
  98     API_REPO   
= 'http://github.com/api/v2/yaml/repos/show/%s/%s' 
  99     API_FORK   
= 'http://github.com/api/v2/yaml/repos/fork/%s/%s' 
 100     API_CREATE 
= 'http://github.com/api/v2/yaml/repos/create' 
 103       slurp_global_flags(args
) 
 105       args
.unshift 
'help' if args
.empty
? 
 108       expanded_args 
= expand_alias(cmd
) 
 109       cmd 
= expanded_args
[0] if expanded_args
 
 111       cmd 
= cmd
.sub(/(\w)-/, '\1_') 
 112       if method_defined
?(cmd
) and cmd !
= 'run' 
 113         args
[0, 1] = expanded_args 
if expanded_args
 
 119       ssh 
= args
.delete('-p') 
 120       has_values 
= /^(--(upload-pack|template|depth|origin|branch|reference)|-[ubo])$/ 
 123       while idx 
< args
.length
 
 125         if arg
.index('-') == 0 
 126           idx +
= 1 if arg 
=~ has_values
 
 127         elsif arg
.index('://') or arg
.index('@') or File
.directory
?(arg
) 
 129         elsif arg
.scan('/').size 
<= 1 && !arg
.include?(':') 
 130           args
[args
.index(arg
)] = github_url(:repo => arg
, :private => ssh
) 
 138       return unless index 
= args
.index('add') 
 141       branch 
= args
.index('-b') || args
.index('--branch') 
 143         args
.delete_at branch
 
 144         branch_name 
= args
.delete_at branch
 
 150         args
.insert branch
, '-b', branch_name
 
 152       args
.insert index
, 'add' 
 156       return unless ['add','set-url'].include?(args
[1]) && args
.last !~ 
%r
{.+
?://|.+
?@
|^
[./]} 
 158       ssh 
= args
.delete('-p') 
 160       args
.last 
=~ 
/\b(.+?)(?:\/(.+
))?$/ 
 163       if args
.words
[2] == 'origin' && args
.words
[3].nil? 
 165       elsif args
.words
[-2] == args
.words
[1] 
 166         idx 
= args
.index( args
.words
[-1] ) 
 169         args
.replace args
[0...-1] 
 172       args 
<< github_url(:user => user
, :repo => repo
, :private => ssh
) 
 176       if args
.include?('--multiple') 
 177         names 
= args
.words
[1..-1] 
 178       elsif remote_name 
= args
.words
[1] 
 179         if remote_name 
=~ 
/^\w+(,\w+)+$/ 
 180           index 
= args
.index(remote_name
) 
 181           args
.delete(remote_name
) 
 182           names 
= remote_name
.split(',') 
 183           args
.insert(index
, *names
) 
 184           args
.insert(index
, '--multiple') 
 186           names 
= [remote_name
] 
 192       names
.reject! 
{ |name
| 
 193         name 
=~ 
/\W/ or remotes
.include?(name
) or 
 194           remotes_group(name
) or not repo_exists
?(name
) 
 199           args
.before 
['remote', 'add', name
, github_url(:user => name
)] 
 204     def cherry_pick(args
) 
 205       unless args
.include?('-m') or args
.include?('--mainline') 
 206         case ref 
= args
.words
.last
 
 207         when %r
{^
(?:https?:)//github
.com
/(.+
?)/(.+
?)/commit/([a-f0-9
]{7,40})} 
 208           user
, repo
, sha 
= $1, $2, $3 
 209           args
[args
.index(ref
)] = sha
 
 210         when /^(\w+)@([a-f1-9]{7,40})$/ 
 211           user
, repo
, sha 
= $1, nil, $2 
 212           args
[args
.index(ref
)] = sha
 
 218           if user 
== repo_owner
 
 219             args
.before 
['fetch', default_remote
] 
 220           elsif remotes
.include?(user
) 
 221             args
.before 
['fetch', user
] 
 223             remote_url 
= github_url(:user => user
, :repo => repo
, :private => false) 
 224             args
.before 
['remote', 'add', '-f', user
, remote_url
] 
 231       if url 
= args
.find 
{ |a
| a 
=~ 
%r
{^https
?://(gist\
.)?github\
.com
/} } 
 232         idx 
= args
.index(url
) 
 234         url 
= url
.sub(%r
{(/pull/\d+
)/\w
*$
}, '\1') unless gist
 
 235         ext 
= gist 
? '.txt' : '.patch' 
 236         url +
= ext 
unless File
.extname(url
) == ext
 
 237         patch_file 
= File
.join(ENV['TMPDIR'], "#{gist ? 'gist-' : ''}#{File.basename(url)}") 
 238         args
.before 
'curl', ['-#LA', "hub #{Hub::Version}", url
, '-o', patch_file
] 
 239         args
[idx
] = patch_file
 
 245         url 
= github_url(:private => true, :repo => current_dirname
) 
 246         args
.after 
"git remote add origin #{url}" 
 251       if github_user 
&& github_token 
&& repo_owner
 
 252         if repo_exists
?(github_user
) 
 253           puts 
"#{github_user}/#{repo_name} already exists on GitHub" 
 258         if args
.include?('--no-remote') 
 261           url 
= github_url(:private => true) 
 262           args
.replace 
%W
"remote add -f #{github_user} #{url}" 
 263           args
.after 
{ puts 
"new remote: #{github_user}" } 
 266     rescue Net
::HTTPExceptions 
 267       response 
= $!
.response
 
 268       warn 
"error creating fork: #{response.message} (HTTP #{response.code})" 
 274         puts 
"'create' must be run from inside a git repository" 
 276       elsif github_user 
&& github_token
 
 279         options
[:private] = true if args
.delete('-p') 
 282           case arg 
= args
.shift
 
 284             options
[:description] = args
.shift
 
 286             options
[:homepage] = args
.shift
 
 288             puts 
"unexpected argument: #{arg}" 
 293         if repo_exists
?(github_user
) 
 294           puts 
"#{github_user}/#{repo_name} already exists on GitHub" 
 295           action 
= "set remote origin" 
 297           action 
= "created repository" 
 301         url 
= github_url(:private => true) 
 303         if remotes
.first !
= 'origin' 
 304           args
.replace 
%W
"remote add -f origin #{url}" 
 306           args
.replace 
%W
"remote -v" 
 309         args
.after 
{ puts 
"#{action}: #{github_user}/#{repo_name}" } 
 311     rescue Net
::HTTPExceptions 
 312       response 
= $!
.response
 
 313       warn 
"error creating repository: #{response.message} (HTTP #{response.code})" 
 318       return if args
[1].nil? || !args
[1].index(',') 
 320       branch  
= (args
[2] ||= normalize_branch(current_branch
)) 
 321       remotes 
= args
[1].split(',') 
 322       args
[1] = remotes
.shift
 
 324       remotes
.each 
do |name
| 
 325         args
.after 
['push', name
, branch
] 
 331       browse_command(args
) do 
 334         dest 
= nil if dest 
== '--' 
 341           abort 
"Usage: hub browse [<USER>/]<REPOSITORY>" 
 344         params 
= { :user => user
, :repo => repo 
} 
 346         case subpage 
= args
.shift
 
 348           branch 
= (!dest 
&& tracked_branch
) || 'master' 
 349           params
[:web] = "/commits/#{branch}" 
 350         when 'tree', NilClass
 
 351           branch 
= !dest 
&& tracked_branch
 
 352           params
[:web] = "/tree/#{branch}" if branch 
&& branch !
= 'master' 
 354           params
[:web] = "/#{subpage}" 
 363       browse_command(args
) do 
 365           branch 
= tracked_branch
 
 366           if branch 
&& branch !
= 'master' 
 367             range
, user 
= branch
, repo_user
 
 369             abort 
"Usage: hub compare [USER] [<START>...]<END>" 
 373           user 
= args
.pop 
|| repo_user
 
 375         { :user => user
, :web => "/compare/#{range}" } 
 380       return help(args
) unless args
[1] == 'standalone' 
 381       require 'hub/standalone' 
 382       puts Hub
::Standalone.build
 
 385       abort 
"hub is running in standalone mode." 
 390         'sh'   => 'alias git=hub', 
 391         'bash' => 'alias git=hub', 
 392         'zsh'  => 'function git(){hub "$@"}', 
 393         'csh'  => 'alias git hub', 
 394         'fish' => 'alias git hub' 
 397       silent 
= args
.delete('-s') 
 401           puts 
"Run this in your shell to start using `hub` as `git`:" 
 405         puts 
"usage: hub alias [-s] SHELL", "" 
 406         puts 
"You already have hub installed and available in your PATH," 
 407         puts 
"but to get the full experience you'll want to alias it to" 
 409         puts 
"To see how to accomplish this for your shell, run the alias" 
 410         puts 
"command again with the name of your shell.", "" 
 412         shells
.map 
{ |key
, _
| key 
}.sort
.each 
do |key
| 
 416         puts 
"  -s   Silent. Useful when using the output with eval, e.g." 
 417         puts 
"       $ eval `hub alias -s bash`" 
 425         abort 
"fatal: never heard of `#{shell}'" 
 433         puts 
"hub version %s" % Version
 
 436     alias_method 
"--version", :version 
 439       command 
= args
.words
[1] 
 444       elsif command
.nil? && !args
.has_flag
?('-a', '--all') 
 445         ENV['GIT_PAGER'] = '' unless args
.has_flag
?('-p', '--paginate') # Use `cat`. 
 446         puts improved_help_text
 
 450     alias_method 
"--help", :help 
 452     def improved_help_text
 
 454 usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] 
 455     [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] 
 456     [--work-tree=GIT_WORK_TREE] [--help] COMMAND 
[ARGS
] 
 459    init       Create an empty git repository 
or reinitialize an existing one
 
 460    add        Add new 
or modified files to the staging area
 
 461    rm         Remove files from the working directory 
and staging area
 
 462    mv         Move 
or rename a file
, a directory
, or a symlink
 
 463    status     Show the status of the working directory 
and staging area
 
 464    commit     Record changes to the repository
 
 467    log        Show the commit history log
 
 468    diff       Show changes between commits
, commit 
and working tree
, etc
 
 469    show       Show information about commits
, tags 
or files
 
 472    branch     List
, create
, or delete branches
 
 473    checkout   Switch the active branch to another branch
 
 474    merge      Join two 
or more development 
histories (branches
) together
 
 475    tag        Create
, list
, delete
, sign 
or verify a tag object
 
 478    clone      Clone a remote repository into a new directory
 
 479    fetch      Download 
data, tags 
and branches from a remote repository
 
 480    pull       Fetch from 
and merge with another repository 
or a local branch
 
 481    push       Upload 
data, tags 
and branches to a remote repository
 
 482    remote     View 
and manage a set of remote repositories
 
 485    reset      Reset your staging area 
or working directory to another point
 
 486    rebase     Re-apply a series of patches 
in one branch onto another
 
 487    bisect     Find by binary search the change that introduced a bug
 
 488    grep       Print files with lines matching a pattern 
in your codebase
 
 490 See 
'git help COMMAND' for more information on a specific command
. 
 496     def slurp_global_flags(args
) 
 497       flags 
= %w
[ -c 
-p 
--paginate 
--no-pager 
--no-replace-objects 
--bare 
--version --help 
] 
 498       flags2 
= %w
[ --exec-path
= --git-dir
= --work-tree
= ] 
 503       while args
[0] && (flags
.include?(args
[0]) || flags2
.any
? {|f
| args
[0].index(f
) == 0 }) 
 506         when '--version', '--help' 
 507           args
.unshift flag
.sub('--', '') 
 509           config_pair 
= args
.shift
 
 510           key
, value 
= config_pair
.split('=', 2) 
 511           Context
::GIT_CONFIG["config #{key}"] = value
.to_s
 
 513           globals 
<< flag 
<< config_pair
 
 514         when '-p', '--paginate', '--no-pager' 
 521       Context
::GIT_CONFIG.executable 
= Array(Context
::GIT_CONFIG.executable
).concat(globals
) 
 522       args
.executable 
= Array(args
.executable
).concat(globals
).concat(locals
) 
 525     def browse_command(args
) 
 526       url_only 
= args
.delete('-u') 
 527       $stderr.puts 
"Warning: the `-p` flag has no effect anymore" if args
.delete('-p') 
 530       args
.executable 
= url_only 
? 'echo' : browser_launcher
 
 531       args
.push 
github_url({:web => true, :private => true}.update(params
)) 
 535       return "** Can't find groff(1)" unless command
?('groff') 
 539       Open3
.popen3(groff_command
) do |stdin, stdout, _
| 
 540         stdin.puts hub_raw_manpage
 
 542         out 
= stdout.read
.strip
 
 548       "groff -Wall -mtty-char -mandoc -Tascii" 
 552       if File
.exists
? file 
= File
.dirname(__FILE__
) + 
'/../../man/hub.1' 
 565       return unless $stdout.tty
? 
 567       read
, write 
= IO
.pipe
 
 576         Kernel
.select 
[STDIN] 
 578         pager 
= ENV['GIT_PAGER'] || 
 579           `git config --get-all core.pager`.split
.first 
|| ENV['PAGER'] || 
 582         pager 
= 'cat' if pager
.empty
? 
 584         exec pager 
rescue exec 
"/bin/sh", "-c", pager
 
 586         $stdout.reopen(write
) 
 587         $stderr.reopen(write
) if $stderr.tty
? 
 593     def repo_exists
?(user
) 
 595       url 
= API_REPO 
% [user
, repo_name
] 
 596       Net
::HTTPSuccess === Net
::HTTP.get_response(URI(url
)) 
 600       url 
= API_FORK 
% [repo_owner
, repo_name
] 
 601       response 
= Net
::HTTP.post_form(URI(url
), 'login' => github_user
, 'token' => github_token
) 
 602       response
.error! 
unless Net
::HTTPSuccess === response
 
 605     def create_repo(options 
= {}) 
 607       params 
= {'login' => github_user
, 'token' => github_token
, 'name' => repo_name
} 
 608       params
['public'] = '0' if options
[:private] 
 609       params
['description'] = options
[:description] if options
[:description] 
 610       params
['homepage'] = options
[:homepage] if options
[:homepage] 
 612       response 
= Net
::HTTP.post_form(URI(url
), params
) 
 613       response
.error! 
unless Net
::HTTPSuccess === response
 
 616     def expand_alias(cmd
) 
 617       if expanded 
= git_alias_for(cmd
) 
 618         if expanded
.index('!') != 0 
 619           require 'shellwords' unless defined?(::Shellwords) 
 620           Shellwords
.shellwords(expanded
) 
 633     class ShellOutCache 
< Hash
 
 634       attr_accessor 
:executable 
 636       def initialize(executable 
= nil, &block
) 
 638         @executable = executable
 
 642         args 
= Shellwords
.shellwords(args
) if args
.respond_to
? :to_str 
 643         Array(executable
) + 
Array(args
) 
 647     GIT_CONFIG 
= ShellOutCache
.new(ENV['GIT'] || 'git') do |cache
, cmd
| 
 648       full_cmd 
= cache
.to_exec(cmd
) 
 649       cmd_string 
= full_cmd
.respond_to
?(:shelljoin) ? full_cmd
.shelljoin 
: full_cmd
.join(' ') 
 650       result 
= %x{#{cmd_string}}.chomp
 
 651       cache
[cmd
] = $
?.success
? && !result
.empty
? ? result 
: nil 
 654     REMOTES 
= Hash
.new 
do |cache
, remote
| 
 656         urls 
= GIT_CONFIG
["config --get-all remote.#{remote}.url"].to_s
.split("\n") 
 658         if urls
.find 
{ |u
| u 
=~ 
%r
{\bgithub\
.com
[:/](.+)/(.+
).git$
} }  
 659           cache
[remote
] = { :user => $1, :repo => $2 } 
 668     LGHCONF 
= "http://help.github.com/git-email-settings/" 
 671       REMOTES
[default_remote
][:user] 
 675       REMOTES
[current_remote
][:user] 
 679       REMOTES
[default_remote
][:repo] || current_dirname
 
 682     def github_user(fatal 
= true) 
 683       if user 
= ENV['GITHUB_USER'] || GIT_CONFIG
['config github.user'] 
 686         abort("** No GitHub user set. See #{LGHCONF}") 
 690     def github_token(fatal 
= true) 
 691       if token 
= ENV['GITHUB_TOKEN'] || GIT_CONFIG
['config github.token'] 
 694         abort("** No GitHub token set. See #{LGHCONF}") 
 699       GIT_CONFIG
['symbolic-ref -q HEAD'] 
 703       branch 
= current_branch 
&& tracked_for(current_branch
) 
 704       normalize_branch(branch
) if branch
 
 708       list 
= GIT_CONFIG
['remote'].to_s
.split("\n") 
 709       main 
= list
.delete('origin') and list
.unshift(main
) 
 713     def remotes_group(name
) 
 714       GIT_CONFIG
["config remotes.#{name}"] 
 718       return if remotes
.empty
? 
 719       (current_branch 
&& remote_for(current_branch
)) || default_remote
 
 726     def normalize_branch(branch
) 
 727       branch
.sub('refs/heads/', '') 
 730     def remote_for(branch
) 
 731       GIT_CONFIG
['config branch.%s.remote' % normalize_branch(branch
)] 
 734     def tracked_for(branch
) 
 735       GIT_CONFIG
['config branch.%s.merge' % normalize_branch(branch
)] 
 739       GIT_CONFIG
['config --bool hub.http-clone'] == 'true' 
 742     def git_alias_for(name
) 
 743       GIT_CONFIG
["config alias.#{name}"] 
 747       GIT_CONFIG
['config core.repositoryformatversion'] 
 750     def github_url(options 
= {}) 
 751       repo 
= options
[:repo] 
 752       user
, repo 
= repo
.split('/') if repo 
&& repo
.index('/') 
 753       user 
||= options
[:user] || github_user
 
 755       secure 
= options
[:private] 
 758         scheme 
= secure 
? 'https:' : 'http:' 
 759         path 
= options
[:web] == true ? '' : options
[:web].to_s
 
 761           repo 
= repo
.sub(/\.wiki$/, '') 
 762           unless '/wiki' == path
 
 763             path 
= '/wiki%s' % if path 
=~ 
%r
{^
/commits
/} then '/_history
' 
 764               else path.sub(/\w+/, '_\0') 
 768         '%s//github.com/%s/%s%s' % [scheme
, user
, repo
, path
] 
 771           url 
= 'git@github.com:%s/%s.git' 
 773           url 
= 'http://github.com/%s/%s.git' 
 775           url 
= 'git://github.com/%s/%s.git' 
 782     DIRNAME 
= File
.basename(Dir
.pwd
) 
 790       browser 
= ENV['BROWSER'] || 
 791         (RbConfig
::CONFIG['host_os'].include?('darwin') && 'open') || 
 792         (RbConfig
::CONFIG['host_os'] =~ 
/msdos|mswin|djgpp|mingw|windows/ && 'start') || 
 793         %w
[xdg-open cygstart x-www-browser firefox opera mozilla netscape
].find 
{ |comm
| which comm 
} 
 795       abort 
"Please set $BROWSER to a web launcher to use this command." unless browser
 
 800       exts 
= ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] 
 801       ENV['PATH'].split(File
::PATH_SEPARATOR).each 
do |path
| 
 803           exe 
= "#{path}/#{cmd}#{ext}" 
 804           return exe 
if File
.executable
? exe
 
 819     def initialize(*args
) 
 820       @args = Args
.new(args
) 
 824     def self.execute(*args
) 
 837       args
.commands
.map 
do |cmd
| 
 838         if cmd
.respond_to
?(:join) 
 839           cmd
.map 
{ |c
| (c
.index(' ') || c
.empty
?) ? "'#{c}'" : c 
}.join(' ') 
 849           execute_command_chain
 
 856     def execute_command_chain
 
 857       commands 
= args
.commands
 
 858       commands
.each_with_index 
do |cmd
, i
| 
 859         if cmd
.respond_to
?(:call) then cmd
.call
 
 860         elsif i 
== commands
.length 
- 1 
 863           exit($
?.exitstatus
) unless system(*cmd
) 
 870   Version 
= VERSION 
= '1.6.1' 
 872 Hub
::Runner.execute(*ARGV) 
 874 .\" generated with Ronn
/v0
.7
.3 
 875 .\" http
://github
.com
/rtomayko
/ronn
/tree/0.7.3 
 877 .TH 
"HUB" "1" "May 2011" "DEFUNKT" "Git Manual" 
 880 \fBhub
\fR \
- git + hub 
= github
 
 883 \fBhub
\fR 
\fICOMMAND
\fR 
\fIOPTIONS
\fR
 
 886 \fBhub 
alias\fR 
[\fB\
-s
\fR
] \fISHELL
\fR
 
 889 \fBgit init \
-g
\fR 
\fIOPTIONS
\fR
 
 892 \fBgit create
\fR 
[\fB\
-p
\fR
] [\fB\
-d 
<DESCRIPTION
>\fR
] [\fB\
-h 
<HOMEPAGE
>\fR
] 
 895 \fBgit clone
\fR 
[\fB\
-p
\fR
] \fIOPTIONS
\fR 
[\fIUSER
\fR
/]\fIREPOSITORY
\fR 
\fIDIRECTORY
\fR
 
 898 \fBgit remote add
\fR 
[\fB\
-p
\fR
] \fIOPTIONS
\fR 
\fIUSER
\fR
[/\fIREPOSITORY
\fR
] 
 901 \fBgit remote set\
-url
\fR 
[\fB\
-p
\fR
] \fIOPTIONS
\fR 
\fIREMOTE\
-NAME
\fR 
\fIUSER
\fR
[/\fIREPOSITORY
\fR
] 
 904 \fBgit fetch
\fR 
\fIUSER\
-1\fR
,[\fIUSER\
-2\fR
,\
.\
.\
.] 
 907 \fBgit cherry\
-pick
\fR 
\fIGITHUB\
-REF
\fR
 
 910 \fBgit am
\fR 
\fIGITHUB\
-URL
\fR
 
 913 \fBgit push
\fR 
\fIREMOTE\
-1\fR
,\fIREMOTE\
-2\fR
,\
.\
.\
.,\fIREMOTE\
-N
\fR 
[\fIREF
\fR
] 
 916 \fBgit browse
\fR 
[\fB\
-u
\fR
] [[\fIUSER
\fR
\fB
/\fR
]\fIREPOSITORY
\fR
] [SUBPAGE
] 
 919 \fBgit compare
\fR 
[\fB\
-u
\fR
] [\fIUSER
\fR
] [\fISTART
\fR\
.\
.\
.]\fIEND
\fR
 
 922 \fBgit submodule add
\fR 
[\fB\
-p
\fR
] \fIOPTIONS
\fR 
[\fIUSER
\fR
/]\fIREPOSITORY
\fR 
\fIDIRECTORY
\fR
 
 925 \fBgit fork
\fR 
[\fB\
-\
-no\
-remote
\fR
] 
 928 \fBhub
\fR enhances various 
\fBgit
\fR commands with GitHub remote expansion\
. The 
alias command displays information on configuring your environment
: 
 931 \fBhub 
alias\fR 
[\fB\
-s
\fR
] \fISHELL
\fR
: Writes shell aliasing code 
for \fISHELL
\fR 
(\fBbash
\fR
, \fBsh
\fR
, \fBzsh
\fR
, \fBcsh
\fR
) to standard output\
. With the 
\fB\
-s
\fR option
, the output of this command can be evaluated directly within the shell
: 
 934 \fBeval $
(hub 
alias \
-s bash
)\fR
 
 937 \fBgit init
\fR 
\fB\
-g
\fR 
\fIOPTIONS
\fR
: Create a git repository as with git\
-init(1) and add remote 
\fBorigin
\fR at 
"git@github\.com:\fIUSER\fR/\fIREPOSITORY\fR\.git"; \fIUSER
\fR is your GitHub username 
and \fIREPOSITORY
\fR is the current working directory
\'s basename\
. 
 940 \fBgit create
\fR 
[\fB\
-p
\fR
] [\fB\
-d 
<DESCRIPTION
>\fR
] [\fB\
-h 
<HOMEPAGE
>\fR
]: 
 943 Create a new public github repository from the current git repository 
and add remote 
\fBorigin
\fR at 
"git@github\.com:\fIUSER\fR/\fIREPOSITORY\fR\.git"; \fIUSER
\fR is your GitHub username 
and \fIREPOSITORY
\fR is the current working directory
\'s basename\
. With 
\fB\
-p
\fR
, create a 
private repository\
. \fB\
-d
\fR 
and \fB\
-h
\fR set the repository
\'s description 
and homepage
, respectively\
. 
 946 \fBgit clone
\fR 
[\fB\
-p
\fR
] \fIOPTIONS
\fR 
[\fIUSER
\fR
\fB
/\fR
]\fIREPOSITORY
\fR 
\fIDIRECTORY
\fR
: 
 949 Clone repository 
"git://github\.com/\fIUSER\fR/\fIREPOSITORY\fR\.git" into 
\fIDIRECTORY
\fR as with git\
-clone(1)\
. When 
\fIUSER
\fR
/ is omitted, assumes your GitHub login\. With \fB\-p\fR, use private remote "git@github\.com:\fIUSER\fR/\fIREPOSITORY
\fR\
.git
"\. 
 952 \fBgit remote add\fR [\fB\-p\fR] \fIOPTIONS\fR \fIUSER\fR[\fB/\fR\fIREPOSITORY\fR]: 
 955 Add remote "git
://github\
.com
/\fIUSER
\fR
/\fIREPOSITORY
\fR\
.git
" as with git\-remote(1)\. When /\fIREPOSITORY\fR is omitted, the basename of the current working directory is used\. With \fB\-p\fR, use private remote "git
@github\
.com
:\fIUSER
\fR
/\fIREPOSITORY
\fR\
.git
"\. If \fIUSER\fR is "origin
" then uses your GitHub login\. 
 958 \fBgit remote set\-url\fR [\fB\-p\fR] \fIOPTIONS\fR \fIREMOTE\-NAME\fR \fIUSER\fR[/\fIREPOSITORY\fR] 
 961 Sets the url of remote \fIREMOTE\-NAME\fR using the same rules as \fBgit remote add\fR\. 
 964 \fBgit fetch\fR \fIUSER\-1\fR,[\fIUSER\-2\fR,\.\.\.]: Adds missing remote(s) with \fBgit remote add\fR prior to fetching\. New remotes are only added if they correspond to valid forks on GitHub\. 
 967 \fBgit cherry\-pick\fR \fIGITHUB\-REF\fR: Cherry\-pick a commit from a fork using either full URL to the commit or GitHub\-flavored Markdown notation, which is \fBuser@sha\fR\. If the remote doesn\'t yet exist, it will be added\. A \fBgit fetch <user>\fR is issued prior to the cherry\-pick attempt\. 
 970 \fBgit am\fR \fIGITHUB\-URL\fR: Downloads the patch file for the pull request or commit at the URL and applies that patch from disk with \fBgit am\fR\. Similar to \fBcherry\-pick\fR, but doesn\'t add new remotes\. 
 973 \fBgit push\fR \fIREMOTE\-1\fR,\fIREMOTE\-2\fR,\.\.\.,\fIREMOTE\-N\fR [\fIREF\fR]: Push \fIREF\fR to each of \fIREMOTE\-1\fR through \fIREMOTE\-N\fR by executing multiple \fBgit push\fR commands\. 
 976 \fBgit browse\fR [\fB\-u\fR] [[\fIUSER\fR\fB/\fR]\fIREPOSITORY\fR] [SUBPAGE]: Open repository\'s GitHub page in the system\'s default web browser using \fBopen(1)\fR or the \fBBROWSER\fR env variable\. If the repository isn\'t specified, \fBbrowse\fR opens the page of the repository found in the current directory\. If SUBPAGE is specified, the browser will open on the specified subpage: one of "wiki
", "commits
", "issues
" or other (the default is "tree
")\. 
 979 \fBgit compare\fR [\fB\-u\fR] [\fIUSER\fR] [\fISTART\fR\.\.\.]\fIEND\fR: Open a GitHub compare view page in the system\'s default web browser\. \fISTART\fR to \fIEND\fR are branch names, tag names, or commit SHA1s specifying the range of history to compare\. If \fISTART\fR is omitted, GitHub will compare against the base branch (the default is "master
")\. 
 982 \fBgit submodule add\fR [\fB\-p\fR] \fIOPTIONS\fR [\fIUSER\fR/]\fIREPOSITORY\fR \fIDIRECTORY\fR: 
 985 Submodule repository "git
://github\
.com
/\fIUSER
\fR
/\fIREPOSITORY
\fR\
.git
" into \fIDIRECTORY\fR as with git\-submodule(1)\. When \fIUSER\fR/ is omitted, assumes your GitHub login\. With \fB\-p\fR, use private remote "git
@github\
.com
:\fIUSER
\fR
/\fIREPOSITORY
\fR\
.git
"\. 
 988 \fBgit fork\fR [\fB\-\-no\-remote\fR]: Forks the original project (referenced by "origin
" remote) on GitHub and adds a new remote for it under your username\. Requires \fBgithub\.token\fR to be set (see CONFIGURATION)\. 
 991 \fBgit help\fR: Display enhanced git\-help(1)\. 
 996 Use git\-config(1) to display the currently configured GitHub username: 
1002 $ git config \-\-global github\.user 
1009 Or, set the GitHub username and token with: 
1015 $ git config \-\-global github\.user <username> 
1016 $ git config \-\-global github\.token <token> 
1023 See \fIhttp://github\.com/guides/local\-github\-config\fR for more information\. 
1026 You can also tell \fBhub\fR to use \fBhttp://\fR rather than \fBgit://\fR when cloning: 
1032 $ git config \-\-global \-\-bool hub\.http\-clone true 
1039 Want to use environment variables instead of a local gitconfig for authentication? 
1042 \fBGITHUB_USER\fR \- If set, this will be used instead of the \fBgithub\.user\fR config 
1045 \fBGITHUB_TOKEN\fR \- If set, this will be used instead of the \fBgithub\.token\fR 
1055 $ git clone schacon/ticgit 
1056 > git clone git://github\.com/schacon/ticgit\.git 
1058 $ git clone \-p schacon/ticgit 
1059 > git clone git@github\.com:schacon/ticgit\.git 
1062 > git clone git://github\.com/YOUR_USER/resque\.git 
1064 $ git clone \-p resque 
1065 > git clone git@github\.com:YOUR_USER/resque\.git 
1069 .SS "git remote add
" 
1073 $ git remote add rtomayko 
1074 > git remote add rtomayko git://github\.com/rtomayko/CURRENT_REPO\.git 
1076 $ git remote add \-p rtomayko 
1077 > git remote add rtomayko git@github\.com:rtomayko/CURRENT_REPO\.git 
1079 $ git remote add origin 
1080 > git remote add origin git://github\.com/YOUR_USER/CURRENT_REPO\.git 
1089 > git remote add mislav git://github\.com/mislav/REPO\.git 
1092 $ git fetch mislav,xoebus 
1093 > git remote add mislav \.\.\. 
1094 > git remote add xoebus \.\.\. 
1095 > git fetch \-\-multiple mislav xoebus 
1099 .SS "git cherry\
-pick
" 
1103 $ git cherry\-pick http://github\.com/mislav/REPO/commit/SHA 
1104 > git remote add \-f mislav git://github\.com/mislav/REPO\.git 
1105 > git cherry\-pick SHA 
1107 $ git cherry\-pick mislav@SHA 
1108 > git remote add \-f mislav git://github\.com/mislav/CURRENT_REPO\.git 
1109 > git cherry\-pick SHA 
1111 $ git cherry\-pick mislav@SHA 
1113 > git cherry\-pick SHA 
1121 $ git am https://github\.com/defunkt/hub/pull/55 
1122 > curl https://github\.com/defunkt/hub/pull/55\.patch \-o /tmp/55\.patch 
1123 > git am /tmp/55\.patch 
1125 $ git am \-\-ignore\-whitespace https://github\.com/davidbalbert/hub/commit/fdb9921 
1126 > curl https://github\.com/davidbalbert/hub/commit/fdb9921\.patch \-o /tmp/fdb9921\.patch 
1127 > git am \-\-ignore\-whitespace /tmp/fdb9921\.patch 
1136 \.\.\. hardcore forking action \.\.\. 
1137 > git remote add YOUR_USER git@github\.com:YOUR_USER/CURRENT_REPO\.git 
1147 > git remote add origin git@github\.com:YOUR_USER/REPO\.git 
1156 \.\.\. hardcore creating action \.\.\. 
1157 > git remote add origin git@github\.com:YOUR_USER/CURRENT_REPO\.git 
1165 $ git push origin,staging,qa bert_timeout 
1166 > git push origin bert_timeout 
1167 > git push staging bert_timeout 
1168 > git push qa bert_timeout 
1177 > open https://github\.com/YOUR_USER/CURRENT_REPO 
1179 $ git browse \-\- issues 
1180 > open https://github\.com/YOUR_USER/CURRENT_REPO/issues 
1182 $ git browse schacon/ticgit 
1183 > open https://github\.com/schacon/ticgit 
1186 > open https://github\.com/YOUR_USER/resque 
1188 $ git browse resque network 
1189 > open https://github\.com/YOUR_USER/resque/network 
1197 $ git compare refactor 
1198 > open https://github\.com/CURRENT_REPO/compare/refactor 
1200 $ git compare 1\.0\.\.\.1\.1 
1201 > open https://github\.com/CURRENT_REPO/compare/1\.0\.\.\.1\.1 
1203 $ git compare \-u fix 
1204 > (https://github\.com/CURRENT_REPO/compare/fix) 
1206 $ git compare other\-user patch 
1207 > open https://github\.com/other\-user/REPO/compare/patch 
1216 > (improved git help) 
1223 \fIhttp://github\.com/defunkt/hub/issues\fR 
1226 \fIhttps://github\.com/defunkt/hub/contributors\fR 
1229 git(1), git\-clone(1), git\-remote(1), git\-init(1), \fIhttp://github\.com\fR, \fIhttp://github\.com/defunkt/hub\fR