
A distributed revision control system
Source code management system for software development.
Maintaining versions of applications when these have a large number of source files.
SourceTree

SourceTree is a free Git Client that provides a graphical interface for Git repositories.
Terms
- Repository: A repository is a collection of commits,
- Index or Staging Area: changes are first registered in something called the index or stage.
- Working Tree or Working Directory: A working tree is any directory on your file system which has a repository associated with it.
- Commit: A commit is a snapshot of your working tree at some point in time.

Terms
- Branch: A branch is just a name for a commit. It’s the parentage of a commit which defines its history.
- Tag: A tag is also a name for a commit, similar to a branch, except that it always names the same commit.
- Master: the mainline of development in most repositories is done on a branch called “master”.
-
HEAD: refers to the last commit or branch you checked out.

Initializing
From existing data
cd ~/projects/myproject
git init
git add .
From existing repo
git clone ~/existing/repo ~/new/repo
git clone git://host.org/project.git
git clone ssh://you@host.org/proj.git
Git Config
From existing data
cd ~/projects/myproject
git config user.name <name>
git config user.email <email>
git remote add origin https://jeanpaul4289@bitbucket.org/jeanpaul4289/probando.git
git add .
git commit -m "Todo"
git push -u origin --all # pushes up the repo and its refs for the first time
git push -u origin --tags # pushes up any tags
git init
git status
git add .
git status
git commit -m "Add files"
git add "*.txt"
git commit -m 'Add all txt files'
git log
git remote add origin https://github.com/try-git/try_git.git
git push -u origin master
git pull origin master
git diff HEAD
git add octofamily/octodog.txt
git diff --staged
git reset octofamily/octodog.txt
git checkout -- octocat.txt
git branch clean_up
git checkout clean_up
git rm '*.txt'
git commit -m 'Remove all txt files'
git checkout master
git merge clean_up
git branch -d clean_up
git push
Checking the status
Files changed in working directory
git status
Changes to tracked files
git diff
What changed between $ID1 and $ID2
git diff $id1 $id2
History of changes
git log
History of changes for file with diffs
git log -p $file $dir/dir/ec/tory
Who changed what and when in a file
git blame $file
A commit identified by $ID
git show $id
A specific file from a specific $ID
git show $id:$file
All local branches
git branch
All files from a specific commit
git diff-tree --no-commit-id --name-only -r <commit-ish>
$id: represent either a commit id, branch or a tag name
$file: arbitrary file name
$branch: arbitrary branch name
Tracking Files
Add file contents to the index
git add $files
Move or rename a file, a directory or a symlink
git mv $old $new
Remove files from the working tree and from the index
git rm $files
git rm --cached $files
$files: arbitrary file name
--cached: use this option to unstage and remove paths only from the index

Revert
Resets the index and working tree. Any changes to tracked files in the working tree since <commit> are discarded
git reset --hard (NO UNDO) (throw away all pending changes)
Revert some existing commits
git revert $id
Replace previous commits, Fix the last commit
git commit -a --amend
Switch branches or restore working tree files, Checkout the $id version of a file
git checkout $id $file
$id: represent either a commit id, branch or a tag name
$file: arbitrary file name
In Git, reverting usually means adding a commit that undos changes in previous commits.
Update
Fetch latest changes from origin (this does not merge them)
git fetch
Pull latest changes from origin (does a fetch followed by a merge)
git pull
Apply a patch that some sent you
git am -3 patch.mbox (in case of a conflict, resolve and use git am --resolved)
git apply patch.diff


Branch
Switch to the $id branch
git checkout $id
Merge branch1 into branch2
git checkout $branch2
git merge $branch1
Create branch named $branch based on the HEAD
git branch $branch
Delete branch $branch
git branch -d $branch
$ref: an object hash or name
$file: arbitrary file name


Publish
Commit all your local changes
git commit -a (-a: add changed files automatically)
Prepare a patch for other developers
git format-patch origin (create set of diffs)
Push changes to origin
git push
Mark a version / milestone
git tag v1.0
$ref: an object hash or name
$file: arbitrary file name


Commands Sequence

GIT Commands (Sourcetree)
By Jean Paul Demorizi
GIT Commands (Sourcetree)
- 1,566