3 # needs read permission only
5 g = Git.open (working_dir = '.')
14 g.log # returns array of Git::Commit objects
15 g.log.since('2 weeks ago')
16 g.log.between('v2.5', 'v2.6')
17 g.log.each {|l| puts l.sha }
18 g.gblob('v2.5:Makefile').log.since('2 weeks ago')
20 g.object('HEAD^').to_s # git show / git rev-parse
21 g.object('HEAD^').contents
22 g.object('v2.5:Makefile').size
23 g.object('v2.5:Makefile').sha
29 g.revparse('v2.5:Makefile')
31 g.branches # returns Git::Branch objects
34 g.branches[:master].gcommit
35 g.branches['origin/master'].gcommit
37 g.grep('hello') # implies HEAD
38 g.blob('v2.5:Makefile').grep('hello')
39 g.tag('v2.5').grep('hello', 'docs/')
41 g.diff(commit1, commit2).size
42 g.diff(commit1, commit2).stats
43 g.gtree('v2.5').diff('v2.6').insertions
44 g.diff('gitsearch1', 'v2.5').path('lib/')
45 g.diff('gitsearch1', @git.gtree('v2.5'))
46 g.diff('gitsearch1', 'v2.5').path('docs/').patch
47 g.gtree('v2.5').diff('v2.6').patch
49 g.gtree('v2.5').diff('v2.6').each do |file_diff|
52 puts file_diff.blob(:src).contents
55 g.config('user.name') # returns 'Scott Chacon'
56 g.config # returns whole config hash
58 g.tag # returns array of Git::Tag objects
62 # needs write permission
67 Git.init('/home/schacon/proj',
68 { :git_dir => '/opt/git/proj.git',
69 :index_file => '/tmp/index'} )
71 g = Git.clone(URI, :name => 'name', :path => '/tmp/checkout'
74 g.config('user.name', 'Scott Chacon')
75 g.config('user.email', 'email@email.com')
81 g.remove(['file.txt', 'file2.txt'])
84 g.commit_all('message')
86 g = Git.clone(repo, 'myrepo')
87 Dir.chdir('myrepo') do
88 new_file('test-file', 'blahblahblah')
89 g.status.untracked.each do |file|
90 puts file.blob(:index).contents
94 g.reset # defaults to HEAD
95 g.reset_hard(Git::Commit)
97 g.branch('new_branch') # creates new or fetches existing
98 g.branch('new_branch').checkout
99 g.branch('new_branch').delete
100 g.branch('existing_branch').checkout
102 g.checkout('new_branch')
103 g.checkout(g.branch('new_branch'))
105 g.branch(name).merge(branch2)
106 g.branch(branch2).merge # merges HEAD with branch2
108 g.branch(name).in_branch(message) { # add files } # auto-commits
109 g.merge('new_branch')
110 g.merge('origin/remote_branch')
111 g.merge(b.branch('master'))
112 g.merge([branch1, branch2])
114 r = g.add_remote(name, uri) # Git::Remote
115 r = g.add_remote(name, Git::Base) # Git::Remote
117 g.remotes # array of Git::Remotes
119 g.remote(name).remove
121 g.remote(name).merge(branch)
124 g.fetch(g.remotes.first)
127 g.pull(Git::Repo, Git::Branch) # fetch and a merge
129 g.add_tag('tag_name') # returns Git::Tag
132 ***** IMPLEMENTED *****