https://github.com/tcmacdonald/intro-to-git
Girl Develop It is here to provide affordable and accessible programs to learn software through mentorship and hands-on instruction.
- We are here for you— ask questions!
- Every question is important.
- Help each other.
- Have fun.
- What is version control?
- Using the command line
- Git in practice
Software projects have lots of files and often require multiple developers making updates to the same codebase.
Leads to bugs, accidental overwrites.
- Who changed what? when?
- How to merge your code and mine?
- Collaborating remotely is hard.
"Version Control" is a system that records changes to files over time.
- Track every change to every file.
- Manage multiple versions of file(s).
- Who added/edited/deleted what?
- Attach descriptive messages to each change.
Over the years, different strategies for version control have evolved.
Two types of version control systems:
Centralized and Distributed
Assumes a single "central" copy of your project somewhere (probably on a server), and programmers will "commit" their changes to this central copy.
Examples include Subversion, CVS and SourceSafe
Doesn't rely on a central server. Every developer "clones" a copy of a repository and has the full history of the project on their own hard drive.
Examples include Bazaar, Mercurial and Git
...designed to manage everything for small or large projects with speed & efficiency.
- Easy to learn
- Provides multiple development workflows
- Open source
Created by Linus Torvalds in 2005 for Linux Kernel Development
- Very fast and efficient
- Cheap local branching
- Works great remotely
- Popularized by Github
-
OSX:
Download Git for Mac -
Windows
Download Git for Windows
There are also some GUIs for Git...
Github helps you visualize your repository while providing some powerful collaboration and code management tools.
- Forks & Pull Requests
- Issues
- Wikis & Github Pages
- Organizations
- Releases & Tags
- ...and more