1 Commands still missing completely;
2 replace Replace a token with a new value for that token.
3 amend-record Replace a patch with a better version before it leaves your repository.
4 resolve Mark any conflicts to the working copy for manual resolution.
5 tag Tag the contents of the repository with a version name.
6 setpref Set a value for a preference (test, predist, ...).
7 rollback Record an inverse patch without changing the working directory.
8 diff Create a diff between two versions of the repository.
9 annotate Display which patch last modified something.
10 dist Create a distribution tarball.
11 trackdown Locate the most recent version lacking an error.
12 query Query information which is stored by vng.
13 pull Copy and apply patches from another repository to this one.
14 unpull Opposite of pull; unsafe if patch is not in remote repository.
15 obliterate Delete selected patches from the repository. (UNSAFE!)
16 send Send by email a bundle of one or more patches.
17 apply Apply patches (from an email bundle) to the repository.
18 get Create a local copy of another repository.
19 put Makes a copy of the repository
20 optimize Optimize the repository.
21 check Check the repository for consistency.
22 repair Repair the corrupted repository.
25 Make the --debug option only available when compiling as debug-build
29 * cursor help (when typing '?') seems to be hardcoded to 'revert'.
30 * test each command to honor its arguments and options.
31 * Use pager for help :)
32 * Use $PAGER for pager
35 * Also show / store file permissions in the diff and thus in revert
36 * Instead of hardcoding '.git' as a dirname; use git-rev-parse in Configuration and in commits/Commit
37 * when in subdir/ using a full path as an argument to whatsNew should just work.
38 * After a revert, and the file ends up with no changes, we should do an update-index on it.
39 * changes does not detect renames
40 * doing a commit will do stuff like adding all files to the index; we should check for maximum command-line length there.
42 use git-read-tree --reset HEAD and git-update-index --refresh to implement 'check'
43 use 'prune' and 'pack' to implement optimize.
46 git ls-remote -h -t [remote] to fetch all branches.
47 allow the user to select the branches he wants to mirror.
51 [09:31] <brad> git people: is it possible to push just a single commit to devil, or does it ineed to be a branch?
52 [09:31] <simon> brad: you can for example do: git push <remote> <sha1>:name-of-new-branch
53 [09:31] <simon> brad: and later remove the branch again with git push <remote> :name-of-new-branch
54 [09:31] <brad> ahh, cool
57 git checkout -b tmp HEAD~5 # rewind to the commit in question
58 vi file.c # edit the file
59 git commit --amend file.c # redo the commit without deleting the commit
60 git rebase --onto tmp master~5 master # replay the later changes
61 git branch -D tmp # clean up the temporary branch
63 Where there are a number of files to amend you are probably better off using:
64 git checkout -b tmp HEAD~5 # rewind to the commit in question
65 git reset HEAD^ # delete the commit at the now current point
67 vi file2.c # the files
68 git commit -a -c ORIG_HEAD # redo the commit incorporating all changed files
69 git rebase --onto tmp master~5 master # replay the later changes
70 git branch -D tmp # clean up the temporary branch
73 http://wiki.winehq.org/GitWine