Updates to git

This commit is contained in:
Adam 2013-07-23 07:53:54 -07:00
commit a7fe2983cc

View File

@ -9,13 +9,10 @@ filename: LearnGit.txt
Git is a distributed version control and source code management system.
Git does this through a series of snapshots of your project, and it works
It does this through a series of snapshots of your project, and it works
with those snapshots to provide you with functionality to version and
manage your source code.
In layman's terms, it's a way of managing, and keeping a detailed historical record,
of your source code.
## Versioning Concepts
### What is version control?
@ -28,7 +25,7 @@ Version control is a system that records changes to a file, or set of files, ove
* Distributed version control focuses on sharing changes. Every change has a unique id.
* Distributed systems have no defined structure. You could easily have a SVN style, centralized system, with git.
[Additional Information](http:#git-scm.com/book/en/Getting-Started-About-Version-Control)
[Additional Information](http://git-scm.com/book/en/Getting-Started-About-Version-Control)
### Why Use Git?
@ -52,7 +49,7 @@ A git repository is comprised of the .git directory & working tree.
### .git Directory (component of repository)
The .git directory contains all the configurations, logs, branches, HEAD, and more.
[Detailed List.](http:#gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html)
[Detailed List.](http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html)
### Working Tree (component of repository)
@ -61,7 +58,7 @@ as your working directory.
### Index (component of .git dir)
The Index is the staging area in git. It's basically layer that separates your working tree
The Index is the staging area in git. It's basically a layer that separates your working tree
from the Git repository. This gives developers more power over what gets sent to the Git
repository.
@ -69,22 +66,22 @@ repository.
A git commit is a snapshot of a set of changes, or manipulations to your Working Tree.
For example, if you added 5 files, and removed 2 others, these changes will be contained
in a commit (or snapshot). This commit, can then be pushed to other repositorys, or not!
in a commit (or snapshot). This commit can then be pushed to other repositories, or not!
### Branch
A branch is essentially a pointer, that points to the last commit you made. As you commit
A branch is essentially a pointer that points to the last commit you made. As you commit,
this pointer will automatically update and point to the latest commit.
### HEAD and head (component of .git dir)
HEAD, is a pointer, that points to the current branch. A repository only has 1 *active* HEAD.
head, is a pointer, that points to any commit. A repository can have any number of heads.
HEAD is a pointer that points to the current branch. A repository only has 1 *active* HEAD.
head is a pointer that points to any commit. A repository can have any number of heads.
### Conceptual Resources
[Git For Computer Scientists](http:#eagain.net/articles/git-for-computer-scientists/)
[Git For Designers](http:#hoth.entp.com/output/git_for_designers.html)
* [Git For Computer Scientists](http://eagain.net/articles/git-for-computer-scientists/)
* [Git For Designers](http://hoth.entp.com/output/git_for_designers.html)
## Commands
@ -93,7 +90,7 @@ head, is a pointer, that points to any commit. A repository can have any number
### init
Create an empty Git repository. The Git repository's settings, stored information,
and more is stored in a directory, or folder named, ".git".
and more is stored in a directory (a folder) named ".git".
```bash
$ git init
@ -114,11 +111,11 @@ $ git config --global user.email "MyEmail@Zoho.com"
$ git config --global user.name "My Name"
```
[Learn More About git config.](http:#git-scm.com/docs/git-config)
[Learn More About git config.](http://git-scm.com/docs/git-config)
### help
To give you quick access to an extremeled detailed guide of each command. Or to
To give you quick access to an extremely detailed guide of each command. Or to
just give you a quick reminder of some semantics.
```bash
@ -151,8 +148,8 @@ $ git help status
### add
To add files to the current working tree/directory/repo. If you do not git add new files to the
working tree/directory they will not be included in commits!
To add files to the current working tree/directory/repo. If you do not `git add` new files to the
working tree/directory, they will not be included in commits!
```bash
# add a file in your current working directory
@ -195,23 +192,25 @@ Updates all files in the working tree to match the version in the index, or spec
# Checkout a repo - defaults to master branch
$ git checkout
# Checkout a specified branch
$ git checkout -b branchName
$ git checkout branchName
# Create a new branch & switch to it, like: "git branch <name>; git checkout <name>"
$ git checkout -b newBranch
```
### clone
Clones, or copys, an existing repository into a new directory. It almost adds
remote-tracking branches for each branch in the cloned repo. (which allows you to push
to a remote branch)
Clones, or copies, an existing repository into a new directory. It also adds
remote-tracking branches for each branch in the cloned repo, which allows you to push
to a remote branch.
```bash
# Clone learnxinyminutes-docs
$ git clone https:#github.com/adambard/learnxinyminutes-docs.git
$ git clone https://github.com/adambard/learnxinyminutes-docs.git
```
### commit
Stores the current contents of the index in a new "commit". This commit contains
Stores the current contents of the index in a new "commit." This commit contains
the changes made and a message created by the user.
```bash
@ -219,6 +218,21 @@ the changes made and a message created by the user.
$ git commit -m "Added multiplyNumbers() function to HelloWorld.c"
```
### diff
Shows differences between a file in the working directory, index and commits.
```bash
# Show difference between your working dir and the index
$ git diff
# Show differences between the index and the most recent commit.
$ git diff --cached
# Show differences between your working dir and the most recent commit
$ git diff HEAD
```
### grep
Allows you to quickly search a repository.
@ -242,8 +256,8 @@ $ git grep 'variableName' -- '*.java'
$ git grep -e 'arrayListName' --and \( -e add -e remove \)
```
Google is your friend for more examples
[Git Grep Ninja](http:#travisjeffery.com/b/2012/02/search-a-git-repo-like-a-ninja)
Google is your friend; for more examples
[Git Grep Ninja](http://travisjeffery.com/b/2012/02/search-a-git-repo-like-a-ninja)
### log
@ -262,7 +276,7 @@ $ git log --merges
### merge
"Merge" in changes, from external commits, into the current branch.
"Merge" in changes from external commits into the current branch.
```bash
# Merge the specified branch into the current.
@ -301,10 +315,10 @@ $ git pull origin master
### push
Push, and merge changes from a branch to a remote & branch.
Push and merge changes from a branch to a remote & branch.
```bash
# Push, and merge changes from a local repo to a
# Push and merge changes from a local repo to a
# remote named "origin" and "master" branch.
# git push <remote> <branch>
# git push => implicitly defaults to => git push origin master
@ -314,15 +328,15 @@ $ git push origin master
### rebase (caution)
Take all changes that were committed on one branch, and replay them onto another branch.
*Do not rebase commits that you have pushed to a public repo*
*Do not rebase commits that you have pushed to a public repo*.
```bash
# Rebase experimentBranch onto master
# git rebase <basebranch> <topicbranch>
$ git rebase master oldTest
$ git rebase master experimentBranch
```
[Additional Reading.](http:#git-scm.com/book/en/Git-Branching-Rebasing)
[Additional Reading.](http://git-scm.com/book/en/Git-Branching-Rebasing)
### reset (caution)
@ -361,12 +375,14 @@ $ git rm /pather/to/the/file/HelloWorld.c
## Further Information
* [tryGit - A fun interactive way to learn Git.](http:#try.github.io/levels/1/challenges/1)
* [tryGit - A fun interactive way to learn Git.](http://try.github.io/levels/1/challenges/1)
* [git-scm - Video Tutorials](http:#git-scm.com/videos)
* [git-scm - Video Tutorials](http://git-scm.com/videos)
* [git-scm - Documentation](http:#git-scm.com/docs)
* [git-scm - Documentation](http://git-scm.com/docs)
* [Atlassian Git - Tutorials & Workflows](https:#www.atlassian.com/git/)
* [Atlassian Git - Tutorials & Workflows](https://www.atlassian.com/git/)
* [SalesForce Cheat Sheet](https:#na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf)
* [SalesForce Cheat Sheet](https://na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf)
* [GitGuys](http://www.gitguys.com/)