TortoiseGit

TortoiseGit

TortoiseGit

A Git client for Windows

Version 2.4.0

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. Authentication
2.1.5.1. SSH (URLs look like [email protected])
2.1.5.2. HTTP/HTTPS (URLs start with https:// or http://)
2.1.6. 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.5.4. Commit Progress
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. 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. Navigation
2.13.6. Statistical Information
2.13.6.1. Statistics Page
2.13.6.2. Commits by Author Page
2.13.6.3. Commits by date Page
2.13.7. 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. Changing case in a filename
2.21.4. Dealing with filename case conflicts
2.21.5. 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. Cherry picking
2.30. Rebase
2.31. Resolving Conflicts
2.31.1. Special conflict cases
2.31.1.1. Delete-modify conflicts
2.31.1.2. Submodule conflicts
2.32. Creating and Applying Patches and Pull Requests
2.32.1. Creating a Patch Serial
2.32.2. Sending patches by mail
2.32.3. Applying a single Patch File
2.32.4. Applying a Patch Serial
2.32.5. Creating a pull request
2.33. Who Changed Which Line?
2.33.1. Blame for Files
2.34. Exporting a Git Working Tree
2.35. Integration with Bug Tracking Systems / Issue Trackers
2.35.1. Adding Issue Numbers to Log Messages
2.35.1.1. Issue Number in Text Box
2.35.1.2. Issue Numbers Using Regular Expressions
2.35.1.3. Issue Tracker Provider Settings based on Hierarchical Git Configuration
2.35.2. Getting Information from the Issue Tracker
2.36. TortoiseGit's Settings
2.36.1. General Settings
2.36.1.1. Context Menu Settings
2.36.1.2. Set Extend Menu Item
2.36.1.3. TortoiseGit Dialog Settings
2.36.1.4. TortoiseGit Dialog Settings 2
2.36.1.5. TortoiseGit Dialog Settings 3
2.36.1.6. TortoiseGit Colour Settings
2.36.1.7. TortoiseGit Colour Settings 2
2.36.1.8. TortoiseGit Colour Settings 3
2.36.2. Icon Overlay Settings
2.36.2.1. Icon Set Selection
2.36.2.2. Enabled Overlay Handlers
2.36.3. Network Settings
2.36.3.1. Email settings
2.36.4. External Program Settings
2.36.4.1. Diff Viewer
2.36.4.2. Merge Tool
2.36.4.3. Diff/Merge Advanced Settings
2.36.4.4. Alternative editor
2.36.5. Saved Data Settings
2.36.6. Git
2.36.6.1. The hierarchical git configuration
2.36.6.2. Git Config
2.36.6.3. Remote
2.36.6.4. Credential
2.36.7. Client Side Hook Scripts
2.36.7.1. Issue Tracker Integration
2.36.7.2. Config
2.36.8. TortoiseGitBlame Settings
2.36.9. TortoiseGitUDiff Settings
2.36.10. Advanced Settings
2.36.11. Exporting TortoiseGit Settings
2.37. git svn dcommit
2.38. Final Step
A. Frequently Asked Questions (FAQ)
3. The GitWCRev Program
3.1. The GitWCRev Command Line
3.2. Keyword Substitution
3.3. Keyword Example
3.4. COM interface
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 Manual
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. giteveryday(7)
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-ignore(1)
G.3.15. git-check-mailmap(1)
G.3.16. git-check-ref-format(1)
G.3.17. git-checkout-index(1)
G.3.18. git-checkout(1)
G.3.19. git-cherry-pick(1)
G.3.20. git-cherry(1)
G.3.21. git-citool(1)
G.3.22. git-clean(1)
G.3.23. git-clone(1)
G.3.24. git-column(1)
G.3.25. git-commit-tree(1)
G.3.26. git-commit(1)
G.3.27. git-config(1)
G.3.28. git-count-objects(1)
G.3.29. git-credential(1)
G.3.30. git-credential-cache--daemon(1)
G.3.31. git-credential-cache(1)
G.3.32. git-credential-store(1)
G.3.33. git-cvsexportcommit(1)
G.3.34. git-cvsimport(1)
G.3.35. git-cvsserver(1)
G.3.36. git-daemon(1)
G.3.37. git-describe(1)
G.3.38. git-diff-files(1)
G.3.39. git-diff-index(1)
G.3.40. git-diff-tree(1)
G.3.41. git-diff(1)
G.3.42. git-difftool(1)
G.3.43. git-fast-export(1)
G.3.44. git-fast-import(1)
G.3.45. git-fetch-pack(1)
G.3.46. git-fetch(1)
G.3.47. git-filter-branch(1)
G.3.48. git-fmt-merge-msg(1)
G.3.49. git-for-each-ref(1)
G.3.50. git-format-patch(1)
G.3.51. git-fsck-objects(1)
G.3.52. git-fsck(1)
G.3.53. git-gc(1)
G.3.54. git-get-tar-commit-id(1)
G.3.55. git-grep(1)
G.3.56. git-gui(1)
G.3.57. git-hash-object(1)
G.3.58. git-help(1)
G.3.59. git-http-backend(1)
G.3.60. git-http-fetch(1)
G.3.61. git-http-push(1)
G.3.62. git-imap-send(1)
G.3.63. git-index-pack(1)
G.3.64. git-init-db(1)
G.3.65. git-init(1)
G.3.66. git-instaweb(1)
G.3.67. git-interpret-trailers(1)
G.3.68. git-log(1)
G.3.69. git-ls-files(1)
G.3.70. git-ls-remote(1)
G.3.71. git-ls-tree(1)
G.3.72. git-mailinfo(1)
G.3.73. git-mailsplit(1)
G.3.74. git-merge-base(1)
G.3.75. git-merge-file(1)
G.3.76. git-merge-index(1)
G.3.77. git-merge-one-file(1)
G.3.78. git-merge-tree(1)
G.3.79. git-merge(1)
G.3.80. git-mergetool--lib(1)
G.3.81. git-mergetool(1)
G.3.82. git-mktag(1)
G.3.83. git-mktree(1)
G.3.84. git-mv(1)
G.3.85. git-name-rev(1)
G.3.86. git-notes(1)
G.3.87. git-p4(1)
G.3.88. git-pack-objects(1)
G.3.89. git-pack-redundant(1)
G.3.90. git-pack-refs(1)
G.3.91. git-parse-remote(1)
G.3.92. git-patch-id(1)
G.3.93. git-prune-packed(1)
G.3.94. git-prune(1)
G.3.95. git-pull(1)
G.3.96. git-push(1)
G.3.97. git-quiltimport(1)
G.3.98. git-read-tree(1)
G.3.99. git-rebase(1)
G.3.100. git-receive-pack(1)
G.3.101. git-reflog(1)
G.3.102. git-relink(1)
G.3.103. git-remote-ext(1)
G.3.104. git-remote-fd(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-request-pull(1)
G.3.110. git-rerere(1)
G.3.111. git-reset(1)
G.3.112. git-rev-list(1)
G.3.113. git-rev-parse(1)
G.3.114. git-revert(1)
G.3.115. git-rm(1)
G.3.116. git-send-email(1)
G.3.117. git-send-pack(1)
G.3.118. git-sh-i18n--envsubst(1)
G.3.119. git-sh-i18n(1)
G.3.120. git-sh-setup(1)
G.3.121. git-shell(1)
G.3.122. git-shortlog(1)
G.3.123. git-show-branch(1)
G.3.124. git-show-index(1)
G.3.125. git-show-ref(1)
G.3.126. git-show(1)
G.3.127. git-stage(1)
G.3.128. git-stash(1)
G.3.129. git-status(1)
G.3.130. git-stripspace(1)
G.3.131. git-submodule(1)
G.3.132. git-svn(1)
G.3.133. git-symbolic-ref(1)
G.3.134. git-tag(1)
G.3.135. git-unpack-file(1)
G.3.136. git-unpack-objects(1)
G.3.137. git-update-index(1)
G.3.138. git-update-ref(1)
G.3.139. git-update-server-info(1)
G.3.140. git-upload-archive(1)
G.3.141. git-upload-pack(1)
G.3.142. git-var(1)
G.3.143. git-verify-commit(1)
G.3.144. git-verify-pack(1)
G.3.145. git-verify-tag(1)
G.3.146. git-web--browse(1)
G.3.147. git-whatchanged(1)
G.3.148. git-worktree(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. gitremote-helpers(1)
G.4.11. gitrepository-layout(5)
G.4.12. gitrevisions(7)
G.4.13. gitweb(1)
G.4.14. gitweb.conf(5)
G.4.15. gitworkflows(7)
G.4.16. 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. Create repository dialog
2.6. Successfull repository creation message
2.7. Clone dialog
2.8. The Switch/Checkout dialog
2.9. The Commit dialog
2.10. The Commit Dialog Spellchecker
2.11. The Progress dialog showing a commit in progress
2.12. Explorer showing icon overlays
2.13. Check for Modifications
2.14. Pull dialog
2.15. Fetch dialog
2.16. Push dialog
2.17. Sync dialog
2.18. A running daemon dialog
2.19. Browse References Dialog dialog
2.20. Delete remote tags dialog
2.21. The add submodule dialog
2.22. Submodule context menu entries
2.23. The update submodule dialog
2.24. Button for updating submodules in progress dialog
2.25. The Revision Log Dialog
2.26. The Revision Log Dialog Top Pane with Context Menu
2.27. The Search Log Messages Dialog
2.28. Top Pane Context Menu for 2 Selected Revisions
2.29. The Log Dialog Bottom Pane with Context Menu
2.30. Commits-by-Author Histogram
2.31. Commits-by-Author Pie Chart
2.32. Commits-by-date Graph
2.33. A Revision Graph
2.34. RefLog Dialog
2.35. The Repository Browser
2.36. The Compare Revisions Dialog
2.37. The submodule difference dialog
2.38. The image difference viewer
2.39. Explorer context menu for unversioned files
2.40. Right drag menu for a directory under version control
2.41. Explorer context menu for unversioned files
2.42. Ignore dialog
2.43. Explorer context menu for versioned files
2.44. Revert dialog
2.45. Clean dialog
2.46. The Reset dialog
2.47. The Abort Merge dialog
2.48. Stash save dialog
2.49. (un)stash options
2.50. Bisect start
2.51. Bisect options
2.52. The Branch Dialog
2.53. The Tag Dialog
2.54. Merge dialog
2.55. Cherry Pick dialog
2.56. Rebase dialog
2.57. The resolve conflicts dialog
2.58. Resolve delete-modify conflict Dialog
2.59. Resolve submodule conflict Dialog
2.60. The Create Patch dialog
2.61. The Send Patches Dialog
2.62. The Choose Repository Dialog
2.63. The Apply Patch Dialog
2.64. The Request Pull Dialog
2.65. TortoiseGitBlame
2.66. The Export Dialog
2.67. Example issue tracker query dialog
2.68. The Settings Dialog, General Page
2.69. The Settings Dialog, Context Menu Page
2.70. The Settings Dialog, Set Extend Menu Item
2.71. The Settings Dialog, Dialogs Page
2.72. Example of Symbolize ref names
2.73. The Settings Dialog, Dialogs Page 2
2.74. The Settings Dialog, Dialogs 3 Page
2.75. The Settings Dialog, Colours Page
2.76. The Settings Dialog, Colours Page
2.77. The Settings Dialog, Colours Page
2.78. The Settings Dialog, Icon Overlays Page
2.79. The Settings Dialog, Icon Set Page
2.80. The Settings Dialog, Icon Handlers Page
2.81. The Settings Dialog, Network Page
2.82. The Settings Dialog, email settings
2.83. The Settings Dialog, Diff Viewer Page
2.84. The Settings Dialog, Merge Tool Page
2.85. The Settings Dialog, Diff/Merge Advanced Dialog
2.86. The Settings Dialog, Alternative editor Page
2.87. The Settings Dialog, Saved Data Page
2.88. The Settings Dialog, Git
2.89. The Settings Dialog, Git, Remote
2.90. The Settings Dialog, Git, Credential
2.91. The Settings Dialog, Hook Scripts Page
2.92. The Settings Dialog, Configure Hook Scripts
2.93. The Settings Dialog, Issue Tracker Integration Page
2.94. The Settings Dialog, Issue Tracker Config
2.95. The Settings Dialog, TortoiseGitBlame Page
2.96. The Settings Dialog, TortoiseGitUDiff Page
2.97. Taskbar with default grouping
2.98. Taskbar with repository grouping
2.99. Taskbar grouping with repository color overlays
C.1. The upgrade dialog