A Gentle Introduction To Using Git
A Gentle Introduction To Using Git
Terminology
- working directory
- This is the top-level directory (folder) that contains your project files. Once you initialize git (
git init
), your working directory will have a new.git
directory in it. Everything you do related to your project will be done in this directory. - repository
- A collection of changes to the files which make up the project. A repository may be copied to another computer. With git everybody working on a project has a separate, complete copy of the repository. The main point of a repository is to track changes over time.
- commit
- A set of changes bundled with a message and some metadata (author, timestamp, id et cetera). Changes can include file additions/deletions/renames and/or edits to one or more files. Typically you should try to avoid a single large commit that covers a bunch of unrelated changes. Instead try to make several smaller commits which "evolve" your project incrementally. Each commit has a pointer to its parent commit.
- index
- The index is a staging area where you can add changes prior to committing them. This way you can commit some changes while leaving other changes for a later commit.
- remote
- A reference to another copy of your local repository. Services like BitBucket, Github or GitLab provide a place to store and interact with remotes.
- origin
- When you configure a remote, you may optionally give it a name. If you don't provide a name, git will use the name
origin
. You may have more than one remote, but only one may be namedorigin
.
Workflow
Create a project directory (<project-name>
) and initialize git. You will only need to do this once per project.
cd ~/Code
mkdir <project-name>
cd <project-name>
git init
Create/edit some files, then commit the changes. git add
will add files to the index. git commit
will open an editor (for a commit message) and then commit whatever is in the index (after saving and closing). Do this anytime you have some changes you need to record.
git add <some-files>
git commit
Once you are finished creating commits, you should push your changes to your remote. Note that if your remote is called origin
, you can leave it off.
git push <name-of-remote>
Sometimes you need to get changes that somebody else pushed to the remove. Many tutorials say to use git pull
, but I prefer to review the changes first.
git fetch
# pause here to review the changes...
git rebase <name-of-remote>/<name-of-branch>
git pull
essentially is a shortcut for git fetch; git rebase ...
. If you're just getting started with git, just use git pull
.
Useful Tools
- My git aliases, specifically
la
andl
. git is a command-line tool, and it is really useful to see a list of recent commits. For instance usegit l -30
to see the thirty most recent commits. - tig is a command line tool for browsing git repositories.
- GitX is a graphical tool for browsing git repositories. Additionally it allows you to stage (add to the index) files, chunks or even individual lines. It also lets you easily make a commit.