|
1 | 1 | 1. Getting Started |
2 | 2 | 1.1 About Version Control |
| 3 | + * Local Version Control Systems |
| 4 | + * Centralized Version Control Systems |
| 5 | + * Distributed Version Control Systems |
3 | 6 | 1.2 A Short History of Git |
4 | 7 | 1.3 Git Basics |
| 8 | + * Snapshots, Not Differences |
| 9 | + * Nearly Every Operation Is Local |
| 10 | + * Git Has Integrity |
| 11 | + * Git Generally Only Adds Data |
| 12 | + * The Three states |
5 | 13 | 1.4 Installing Git |
| 14 | + * Installing From Source |
| 15 | + * Installing On Linux (yum, apt-get) |
| 16 | + * Installing On Mac (binary installer, MacPorts) |
| 17 | + * Installing On Windows (msysgit installer) |
6 | 18 | 1.5 First-Time Git Setup |
| 19 | + * Your Identity |
| 20 | + * Your Editor |
| 21 | + * Your Diff Tool |
| 22 | + * Checking Your Settings |
7 | 23 | 1.6 Getting Help |
8 | 24 | 1.7 Summary |
9 | 25 |
|
10 | 26 | 2. Git Basics |
11 | 27 | 2.1 Getting a Git Repository |
| 28 | + * Initializing a Repository in an Existing Directory |
| 29 | + * Cloning an Existing Repository |
12 | 30 | 2.2 Recording Changes to the Repository |
| 31 | + * Checking the Status of Your Files |
| 32 | + * Tracking New Files |
| 33 | + * Staging Modified Files |
| 34 | + * Ignoring Files |
| 35 | + * Viewing Your Staged and Unstaged Changes |
| 36 | + * Committing Your Changes |
| 37 | + * Skipping the Staging Area |
| 38 | + * Removing Files |
| 39 | + * Moving Files |
13 | 40 | 2.3 Viewing the Commit History |
| 41 | + * Limiting Log Output |
| 42 | + * Using a GUI to Visualize History |
14 | 43 | 2.4 Undoing Things |
| 44 | + * Changing Your Last Commit |
| 45 | + * Unstaging a Staged File |
| 46 | + * Unmodifying a Modified File |
15 | 47 | 2.5 Working with Remotes |
| 48 | + * Showing Your Remotes |
| 49 | + * Adding Remote Repositories |
| 50 | + * Fetching and Pulling from Your Remotes |
| 51 | + * Pushing to Your Remotes |
| 52 | + * Inspecting a Remote |
| 53 | + * Removing and Renaming Remotes |
16 | 54 | 2.6 Tagging |
| 55 | + * Listing Your Tags |
| 56 | + * Creating Tags |
| 57 | + * Annotated Tags |
| 58 | + * Signed Tags |
| 59 | + * Lightweight Tags |
| 60 | + * Verifying Tags |
| 61 | + * Tagging Later |
| 62 | + * Sharing Tags |
17 | 63 | 2.7 Tips and Tricks |
| 64 | + * Auto-Completion |
| 65 | + * Git Aliases |
18 | 66 | 2.8 Summary |
19 | 67 |
|
20 | 68 | 3. Git Branching |
21 | 69 | 3.1 What a Branch Is |
22 | 70 | 3.2 Basic Branching and Merging |
| 71 | + * Basic Branching |
| 72 | + * Basic Merging |
| 73 | + * Basic Merge Conflicts |
23 | 74 | 3.3 Branch Management |
24 | 75 | 3.4 Branching Workflows |
| 76 | + * Long-Running Branches |
| 77 | + * Topic Branches |
25 | 78 | 3.5 Remote Branches |
| 79 | + * Pushing |
| 80 | + * Tracking Branches |
| 81 | + * Deleting Remote Branches |
26 | 82 | 3.6 Rebasing |
| 83 | + * The Basic Rebase |
| 84 | + * More Interesting Rebases |
| 85 | + * The Perils of Rebasing |
27 | 86 | 3.7 Summary |
28 | 87 |
|
29 | 88 | 4. Git on the Server |
30 | 89 | 4.1 The Protocols |
| 90 | + * Local Protocol |
| 91 | + * The SSH Protocol |
| 92 | + * The Git Protocol |
| 93 | + * The HTTP/S Protocol |
31 | 94 | 4.2 Getting Git on a Server |
| 95 | + * Putting the Bare Repository on a Server |
| 96 | + * Small Setups |
| 97 | + * SSH Access |
32 | 98 | 4.3 Generating Your SSH Public Key |
33 | 99 | 4.4 Setting Up the Server |
34 | 100 | 4.5 Public Access |
35 | 101 | 4.6 GitWeb |
36 | 102 | 4.7 Gitosis |
37 | 103 | 4.8 Gitolite |
| 104 | + * Installing |
| 105 | + * Customising the Install |
| 106 | + * Config File and Access Control Rules |
| 107 | + * Advanced Access Control with "deny" rules |
| 108 | + * Restricting pushes by files changed |
| 109 | + * Personal Branches |
| 110 | + * "Wildcard" repositories |
| 111 | + * Other Features |
38 | 112 | 4.9 Git Daemon |
39 | 113 | 4.10 Hosted Git |
| 114 | + * GitHub |
| 115 | + * Setting Up a User Account |
| 116 | + * Creating a New Repository |
| 117 | + * Importing from Subversion |
| 118 | + * Adding Collaborators |
| 119 | + * Your Project |
| 120 | + * Forking Projects |
| 121 | + * GitHub Summary |
40 | 122 | 4.11 Summary |
41 | 123 |
|
42 | 124 | 5. Distributed Git |
43 | 125 | 5.1 Distributed Workflows |
| 126 | + * Centralized Workflow |
| 127 | + * Integration-Manager Workflow |
| 128 | + * Dictator and Lieutenants Workflow |
44 | 129 | 5.2 Contributing to a Project |
| 130 | + * Commit Guidelines |
| 131 | + * Private Small Team |
| 132 | + * Private Managed Team |
| 133 | + * Public Small Project |
| 134 | + * Public Large Project |
| 135 | + * Summary |
45 | 136 | 5.3 Maintaining a Project |
| 137 | + * Working in Topic Branches |
| 138 | + * Applying Patches from E-mail |
| 139 | + * Applying a Patch with apply |
| 140 | + * Applying a Patch with am |
| 141 | + * Checking Out Remote Branches |
| 142 | + * Determining What Is Introduced |
| 143 | + * Integrating Contributed Work |
| 144 | + * Merging Workflows |
| 145 | + * Large-Merging Workflows |
| 146 | + * Rebasing and Cherry Picking Workflows |
| 147 | + * Tagging Your Releases |
| 148 | + * Generating a Build Number |
| 149 | + * Preparing a Release |
| 150 | + * The Shortlog |
46 | 151 | 5.4 Summary |
47 | 152 |
|
48 | 153 | 6. Git Tools |
49 | 154 | 6.1 Revision Selection |
| 155 | + * Single Revisions |
| 156 | + * Short SHA |
| 157 | + * A SHORT NOTE ABOUT SHA-1 |
| 158 | + * Branch References |
| 159 | + * RefLog Shortnames |
| 160 | + * Ancestry References |
| 161 | + * Commit Ranges |
| 162 | + * Double Dot |
| 163 | + * Multiple Points |
| 164 | + * Triple Dot |
50 | 165 | 6.2 Interactive Staging |
| 166 | + * Staging and Unstaging Files |
| 167 | + * Staging Patches |
51 | 168 | 6.3 Stashing |
| 169 | + * Stashing Your Work |
| 170 | + * Un-applying a Stash |
| 171 | + * Creating a Branch from a Stash |
52 | 172 | 6.4 Rewriting History |
| 173 | + * Changing the Last Commit |
| 174 | + * Changing Multiple Commit Messages |
| 175 | + * Reordering Commits |
| 176 | + * Squashing a Commit |
| 177 | + * Splitting a Commit |
| 178 | + * The Nuclear Option: filter-branch |
| 179 | + * Removing a File from Every Commit |
| 180 | + * Making a Subdirectory the New Root |
| 181 | + * Changing E-Mail Addresses Globally |
53 | 182 | 6.5 Debugging with Git |
| 183 | + * File Annotation |
| 184 | + * Binary Search |
54 | 185 | 6.6 Submodules |
| 186 | + * Starting with Submodules |
| 187 | + * Cloning a Project with Submodules |
| 188 | + * Superprojects |
| 189 | + * Issues with Submodules |
55 | 190 | 6.7 Subtree Merging |
56 | 191 | 6.8 Summary |
57 | 192 |
|
58 | 193 | 7. Customizing Git |
59 | 194 | 7.1 Git Configuration |
| 195 | + * Basic Client Configuration |
| 196 | + * Colors in Git |
| 197 | + * External Merge and Diff Tools |
| 198 | + * Formatting and Whitespace |
| 199 | + * Server Configuration |
60 | 200 | 7.2 Git Attributes |
| 201 | + * Binary Files |
| 202 | + * Keyword Expansion |
| 203 | + * Exporting Your Repository |
| 204 | + * Merge Strategies |
61 | 205 | 7.3 Git Hooks |
| 206 | + * Installing a Hook |
| 207 | + * Client-Side Hooks |
| 208 | + * Server-Side Hooks |
62 | 209 | 7.4 An Example Git-Enforced Policy |
| 210 | + * Server-Side Hook |
| 211 | + * Client-Side Hooks |
63 | 212 | 7.5 Summary |
64 | 213 |
|
65 | 214 | 8. Git and Other Systems |
66 | 215 | 8.1 Git and Subversion |
| 216 | + * git svn |
| 217 | + * Setting Up |
| 218 | + * Getting Started |
| 219 | + * Committing Back to Subversion |
| 220 | + * Pulling in New Changes |
| 221 | + * Git Branching Issues |
| 222 | + * Subversion Branching |
| 223 | + * Creating a New SVN Branch |
| 224 | + * Switching Active Branches |
| 225 | + * Subversion Commands |
| 226 | + * SVN Style History |
| 227 | + * SVN Annotation |
| 228 | + * SVN Server Information |
| 229 | + * Ignoring What Subversion Ignores |
| 230 | + * Git-Svn Summary |
67 | 231 | 8.2 Migrating to Git |
| 232 | + * Importing |
| 233 | + * Subversion |
| 234 | + * Perforce |
| 235 | + * A Custom Importer |
68 | 236 | 8.3 Summary |
69 | 237 |
|
70 | 238 | 9. Git Internals |
71 | 239 | 9.1 Plumbing and Porcelain |
72 | 240 | 9.2 Git Objects |
| 241 | + * Tree Objects |
| 242 | + * Commit Objects |
| 243 | + * Object Storage |
73 | 244 | 9.3 Git References |
| 245 | + * The HEAD |
| 246 | + * Tags |
| 247 | + * Remotes |
74 | 248 | 9.4 Packfiles |
75 | 249 | 9.5 The Refspec |
| 250 | + * Pushing Refspecs |
| 251 | + * Deleting References |
76 | 252 | 9.6 Transfer Protocols |
| 253 | + * The Dumb Protocol |
| 254 | + * The Smart Protocol |
| 255 | + * Uploading Data |
| 256 | + * Downloading Data |
77 | 257 | 9.7 Maintenance and Data Recovery |
| 258 | + * Maintenance |
| 259 | + * Data Recovery |
| 260 | + * Removing Objects |
78 | 261 | 9.8 Summary |
79 | | - |
|
0 commit comments