TortoiseGit

A Git client for Windows

Version 1.8.11

Lübbe Onken (TortoiseSVN)

Simon Large (TortoiseSVN)

Frank Li

Sven Strickroth


Table of Contents

Preface
1. Audience
2. Reading Guide
3. TortoiseGit is free!
4. Community
5. Acknowledgments
6. Terminology used in this document
1. Introduction
1.1. What is TortoiseGit?
1.2. TortoiseGit's History
1.3. TortoiseGit's Features
1.4. Installing TortoiseGit
1.4.1. System requirements
1.4.2. Installation
1.4.3. Language Packs
1.4.4. Spellchecker
2. TortoiseGit Daily Use Guide
2.1. Getting Started
2.1.1. Icon Overlays
2.1.2. Context Menus
2.1.3. Drag and Drop
2.1.4. Common Shortcuts
2.1.5. Maximizing Windows
2.2. Create Repository
2.3. Clone Repository
2.4. Checking Out A Working Tree (Switch to commit)
2.5. Committing Your Changes To The Repository
2.5.1. The Commit Dialog
2.5.2. Commit only parts of files
2.5.3. Commit Log Messages
2.6. Getting Status Information
2.6.1. Icon Overlays
2.6.2. Status
2.6.3. Viewing Diffs
2.7. Pull and Fetch change
2.8. Push
2.8.1. Branch
2.8.2. Destination
2.8.3. Options
2.9. Sync
2.9.1. Branch
2.9.2. Destination
2.9.3. Options
2.10. Daemon
2.11. Browse All Refs
2.12. Submodules
2.13. Revision Log Dialog
2.13.1. Invoking the Revision Log Dialog
2.13.2. Revision Log Actions
2.13.3. Getting Additional Information
2.13.4. Filtering Log Messages
2.13.5. Statistical Information
2.13.5.1. Statistics Page
2.13.5.2. Commits by Author Page
2.13.5.3. Commits by date Page
2.13.6. Refreshing the View
2.14. Revision Graphs
2.14.1. Revision Graph Nodes
2.14.2. Using the Graph
2.14.3. Refreshing the View
2.15. Reference Log
2.16. The Repository Browser
2.17. Viewing Differences
2.17.1. File Differences
2.17.2. Line-end and Whitespace Options
2.17.3. Comparing Version
2.17.4. Diffing submodules using Submodule Diff Dialog
2.17.5. Diffing Images Using TortoiseGitIDiff
2.17.6. External Diff/Merge Tools
2.18. Adding New Files
2.19. Copying/Moving/Renaming Files and Folders
2.20. Ignoring Files And Directories
2.20.1. Pattern Matching in Ignore Lists
2.21. Deleting, Moving and Renaming
2.21.1. Deleting files and folders
2.21.2. Moving files and folders
2.21.3. Deleting Unversioned Files
2.22. Undo Changes
2.23. Cleanup
2.24. Reset
2.25. Stash Changes
2.26. Bisect
2.27. Branching / Tagging
2.27.1. Creating a Branch or Tag
2.28. Merging
2.29. Rebase
2.30. Resolving Conflicts
2.31. Creating and Applying Patches and Pull Requests
2.31.1. Creating a Patch Serial
2.31.2. Sending patches by mail
2.31.3. Applying a single Patch File
2.31.4. Applying a Patch Serial
2.31.5. Creating a pull request
2.32. Who Changed Which Line?
2.32.1. Blame for Files
2.33. Exporting a Git Working Tree
2.34. Integration with Bug Tracking Systems / Issue Trackers
2.34.1. Adding Issue Numbers to Log Messages
2.34.1.1. Issue Number in Text Box
2.34.1.2. Issue Numbers Using Regular Expressions
2.34.1.3. Issue Tracker Provider Settings based on Hierarchical Git Configuration
2.34.2. Getting Information from the Issue Tracker
2.35. TortoiseGit's Settings
2.35.1. General Settings
2.35.1.1. Context Menu Settings
2.35.1.2. Set Extend Menu Item
2.35.1.3. TortoiseGit Dialog Settings
2.35.1.4. TortoiseGit Dialog Settings 2
2.35.1.5. TortoiseGit Dialog Settings 3
2.35.1.6. TortoiseGit Colour Settings
2.35.1.7. TortoiseGit Colour Settings 2
2.35.1.8. TortoiseGit Colour Settings 3
2.35.2. Icon Overlay Settings
2.35.2.1. Icon Set Selection
2.35.2.2. Enabled Overlay Handlers
2.35.3. Network Settings
2.35.3.1. Email settings
2.35.4. External Program Settings
2.35.4.1. Diff Viewer
2.35.4.2. Merge Tool
2.35.4.3. Diff/Merge Advanced Settings
2.35.4.4. Alternative editor
2.35.5. Saved Data Settings
2.35.6. Git
2.35.6.1. The hierarchical git configuration
2.35.6.2. Git Config
2.35.6.3. Remote
2.35.6.4. Credential
2.35.7. Client Side Hook Scripts
2.35.7.1. Issue Tracker Integration
2.35.7.2. Config
2.35.8. TortoiseGitBlame Settings
2.35.9. Advanced Settings
2.35.10. Exporting TortoiseGit Settings
2.36. git svn dcommit
2.37. Final Step
A. Frequently Asked Questions (FAQ)
B. IBugtraqProvider interface
B.1. Naming conventions
B.2. The IBugtraqProvider interface
B.3. The IBugtraqProvider2 interface
C. Useful Tips For Administrators
C.1. Deploy TortoiseGit via group policies
C.2. Redirect the upgrade check
C.3. Disable context menu entries
D. Automating TortoiseGit
D.1. TortoiseGit Commands
D.2. TortoiseGitIDiff Commands
E. Implementation Details
E.1. Icon Overlays
F. Tips and tricks for SSH/PuTTY
F.1. Introduction
F.1.1. How to use sessions
F.2. FAQ and examples section
F.2.1. How to use a default key for all SSH connections
F.2.2. How to connect to a SSH server on a different port
F.2.2.1. All connections to a server should use the different port
F.2.2.2. One special connection should use a different port
F.2.3. How to use two different ssh keys for the same user on the same host
G. Git Offical Documentation
G.1. Git User Manual
G.1.1. Git User's Manual (for version 1.5.3 or newer)
G.1.1.1. Git Quick Reference
G.1.1.2. Notes and todo list for this manual
G.2. Git Tutorial
G.2.1. gittutorial(7)
G.2.2. gittutorial-2(7)
G.2.3. gitcore-tutorial(7)
G.2.4. gitcvs-migration(7)
G.2.5. Everyday GIT With 20 Commands Or So
G.3. Git Command Reference
G.3.1. git(1)
G.3.2. git-add(1)
G.3.3. git-am(1)
G.3.4. git-annotate(1)
G.3.5. git-apply(1)
G.3.6. git-archimport(1)
G.3.7. git-archive(1)
G.3.8. git-bisect(1)
G.3.9. git-blame(1)
G.3.10. git-branch(1)
G.3.11. git-bundle(1)
G.3.12. git-cat-file(1)
G.3.13. git-check-attr(1)
G.3.14. git-check-ref-format(1)
G.3.15. git-checkout-index(1)
G.3.16. git-checkout(1)
G.3.17. git-cherry-pick(1)
G.3.18. git-cherry(1)
G.3.19. git-citool(1)
G.3.20. git-clean(1)
G.3.21. git-clone(1)
G.3.22. git-column(1)
G.3.23. git-commit-tree(1)
G.3.24. git-commit(1)
G.3.25. git-config(1)
G.3.26. git-count-objects(1)
G.3.27. git-credential(1)
G.3.28. git-credential-cache--daemon(1)
G.3.29. git-credential-cache(1)
G.3.30. git-credential-store(1)
G.3.31. git-cvsexportcommit(1)
G.3.32. git-cvsimport(1)
G.3.33. git-cvsserver(1)
G.3.34. git-daemon(1)
G.3.35. git-describe(1)
G.3.36. git-diff-files(1)
G.3.37. git-diff-index(1)
G.3.38. git-diff-tree(1)
G.3.39. git-diff(1)
G.3.40. git-difftool(1)
G.3.41. git-fast-export(1)
G.3.42. git-fast-import(1)
G.3.43. git-fetch-pack(1)
G.3.44. git-fetch(1)
G.3.45. git-filter-branch(1)
G.3.46. git-fmt-merge-msg(1)
G.3.47. git-for-each-ref(1)
G.3.48. git-format-patch(1)
G.3.49. git-fsck-objects(1)
G.3.50. git-fsck(1)
G.3.51. git-gc(1)
G.3.52. git-get-tar-commit-id(1)
G.3.53. git-grep(1)
G.3.54. git-gui(1)
G.3.55. git-hash-object(1)
G.3.56. git-help(1)
G.3.57. git-http-backend(1)
G.3.58. git-http-fetch(1)
G.3.59. git-http-push(1)
G.3.60. git-imap-send(1)
G.3.61. git-index-pack(1)
G.3.62. git-init-db(1)
G.3.63. git-init(1)
G.3.64. git-instaweb(1)
G.3.65. git-log(1)
G.3.66. git-lost-found(1)
G.3.67. git-ls-files(1)
G.3.68. git-ls-remote(1)
G.3.69. git-ls-tree(1)
G.3.70. git-mailinfo(1)
G.3.71. git-mailsplit(1)
G.3.72. git-merge-base(1)
G.3.73. git-merge-file(1)
G.3.74. git-merge-index(1)
G.3.75. git-merge-one-file(1)
G.3.76. git-merge-tree(1)
G.3.77. git-merge(1)
G.3.78. git-mergetool--lib(1)
G.3.79. git-mergetool(1)
G.3.80. git-mktag(1)
G.3.81. git-mktree(1)
G.3.82. git-mv(1)
G.3.83. git-name-rev(1)
G.3.84. git-notes(1)
G.3.85. git-p4(1)
G.3.86. git-pack-objects(1)
G.3.87. git-pack-redundant(1)
G.3.88. git-pack-refs(1)
G.3.89. git-parse-remote(1)
G.3.90. git-patch-id(1)
G.3.91. git-peek-remote(1)
G.3.92. git-prune-packed(1)
G.3.93. git-prune(1)
G.3.94. git-pull(1)
G.3.95. git-push(1)
G.3.96. git-quiltimport(1)
G.3.97. git-read-tree(1)
G.3.98. git-rebase(1)
G.3.99. git-receive-pack(1)
G.3.100. git-reflog(1)
G.3.101. git-relink(1)
G.3.102. git-remote-ext(1)
G.3.103. git-remote-fd(1)
G.3.104. git-remote-helpers(1)
G.3.105. git-remote-testgit(1)
G.3.106. git-remote(1)
G.3.107. git-repack(1)
G.3.108. git-replace(1)
G.3.109. git-repo-config(1)
G.3.110. git-request-pull(1)
G.3.111. git-rerere(1)
G.3.112. git-reset(1)
G.3.113. git-rev-list(1)
G.3.114. git-rev-parse(1)
G.3.115. git-revert(1)
G.3.116. git-rm(1)
G.3.117. git-send-email(1)
G.3.118. git-send-pack(1)
G.3.119. git-sh-i18n--envsubst(1)
G.3.120. git-sh-i18n(1)
G.3.121. git-sh-setup(1)
G.3.122. git-shell(1)
G.3.123. git-shortlog(1)
G.3.124. git-show-branch(1)
G.3.125. git-show-index(1)
G.3.126. git-show-ref(1)
G.3.127. git-show(1)
G.3.128. git-stage(1)
G.3.129. git-stash(1)
G.3.130. git-status(1)
G.3.131. git-stripspace(1)
G.3.132. git-submodule(1)
G.3.133. git-svn(1)
G.3.134. git-symbolic-ref(1)
G.3.135. git-tag(1)
G.3.136. git-tar-tree(1)
G.3.137. git-unpack-file(1)
G.3.138. git-unpack-objects(1)
G.3.139. git-update-index(1)
G.3.140. git-update-ref(1)
G.3.141. git-update-server-info(1)
G.3.142. git-upload-archive(1)
G.3.143. git-upload-pack(1)
G.3.144. git-var(1)
G.3.145. git-verify-pack(1)
G.3.146. git-verify-tag(1)
G.3.147. git-web--browse(1)
G.3.148. git-whatchanged(1)
G.3.149. git-write-tree(1)
G.4. Misc
G.4.1. gitcli(7)
G.4.2. gitattributes(5)
G.4.3. gitcredentials(7)
G.4.4. gitdiffcore(7)
G.4.5. gitignore(5)
G.4.6. githooks(5)
G.4.7. gitk(1)
G.4.8. gitmodules(5)
G.4.9. gitnamespaces(7)
G.4.10. gitrepository-layout(5)
G.4.11. gitrevisions(7)
G.4.12. gitweb(1)
G.4.13. gitweb.conf(5)
G.4.14. gitworkflows(7)
G.4.15. gitglossary(7)
Glossary
Index

List of Figures

2.1. Explorer showing icon overlays
2.2. Context menu for a directory under version control
2.3. Explorer file menu for a shortcut in a versioned folder
2.4. Right drag menu for a directory under version control
2.5. The Checkout dialog
2.6. The Commit dialog
2.7. The Commit Dialog Spellchecker
2.8. Explorer showing icon overlays
2.9. Check for Modifications
2.10. A running daemon dialog
2.11. The add submodule dialog
2.12. Submodule context menu entries
2.13. The update submodule dialog
2.14. Button for updating submodules in progress dialog
2.15. The Revision Log Dialog
2.16. The Revision Log Dialog Top Pane with Context Menu
2.17. The Search Log Messages Dialog
2.18. Top Pane Context Menu for 2 Selected Revisions
2.19. The Log Dialog Bottom Pane with Context Menu
2.20. Commits-by-Author Histogram
2.21. Commits-by-Author Pie Chart
2.22. Commits-by-date Graph
2.23. A Revision Graph
2.24. RefLog Dialog
2.25. The Repository Browser
2.26. The Compare Revisions Dialog
2.27. The submodule difference dialog
2.28. The image difference viewer
2.29. Explorer context menu for unversioned files
2.30. Explorer context menu for unversioned files
2.31. Ignore dialog
2.32. Explorer context menu for versioned files
2.33. Revert dialog
2.34. Clean dialog
2.35. The Reset dialog
2.36. The Abort Merge dialog
2.37. Stash save dialog
2.38. (un)stash options
2.39. Bisect start
2.40. Bisect options
2.41. The Branch Dialog
2.42. The Tag Dialog
2.43. Merge dialog
2.44. The resolve conflicts dialog
2.45. The Create Patch dialog
2.46. The Send Patches Dialog
2.47. The Choose Repository Dialog
2.48. The Apply Patch Dialog
2.49. The Request Pull Dialog
2.50. TortoiseGitBlame
2.51. The Export Dialog
2.52. Example issue tracker query dialog
2.53. The Settings Dialog, General Page
2.54. The Settings Dialog, Context Menu Page
2.55. The Settings Dialog, Set Extend Menu Item
2.56. The Settings Dialog, Dialogs Page
2.57. Example of Symbolize ref names
2.58. The Settings Dialog, Dialogs Page 2
2.59. The Settings Dialog, Dialogs 3 Page
2.60. The Settings Dialog, Colours Page
2.61. The Settings Dialog, Colours Page
2.62. The Settings Dialog, Colours Page
2.63. The Settings Dialog, Icon Overlays Page
2.64. The Settings Dialog, Icon Set Page
2.65. The Settings Dialog, Icon Handlers Page
2.66. The Settings Dialog, Network Page
2.67. The Settings Dialog, email settings
2.68. The Settings Dialog, Diff Viewer Page
2.69. The Settings Dialog, Merge Tool Page
2.70. The Settings Dialog, Diff/Merge Advanced Dialog
2.71. The Settings Dialog, Alternative editor Page
2.72. The Settings Dialog, Saved Data Page
2.73. The Settings Dialog, Git
2.74. The Settings Dialog, Git, Remote
2.75. The Settings Dialog, Git, Credential
2.76. The Settings Dialog, Hook Scripts Page
2.77. The Settings Dialog, Configure Hook Scripts
2.78. The Settings Dialog, Issue Tracker Integration Page
2.79. The Settings Dialog, Issue Tracker Config
2.80. The Settings Dialog, TortoiseGitBlame Page
2.81. Taskbar with default grouping
2.82. Taskbar with repository grouping
2.83. Taskbar grouping with repository color overlays
C.1. The upgrade dialog

List of Tables

C.1. Menu entries and their values
D.1. List of available commands and options
D.2. List of available options

List of Examples

G.1. Merge upwards
G.2. Topic branches
G.3. Merge to downstream only at well-defined points
G.4. Throw-away integration branches
G.5. Verify master is a superset of maint
G.6. Release tagging
G.7. Copy maint
G.8. Update maint to new release
G.9. Rewind and rebuild next
G.10. Push/pull: Publishing branches/topics
G.11. Push/pull: Staying up to date
G.12. Push/pull: Merging remote topics
G.13. format-patch/am: Publishing branches/topics
G.14. format-patch/am: Keeping topics up to date
G.15. format-patch/am: Importing patches