Git is a free and open source distributed version control system designed to handle everything from small to very large source code projects with speed and efficiency.
A VCS is a system that records changes to a file or set of files over time so that you can recall specific versions later.
Repository
server
Kevin's Laptop
localhost
Rachel's Laptop
localhost
Web-based Git repository hosting service.
Web-based Git repository hosting service.
Use GitHub or Bitbucket to create a new repository following the steps on their website.
cd Sites/
mkdir git-in-charge-of-your-code
cd git-in-charge-of-your-code
echo "# git-in-charge-of-your-code" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/wirthdesign/git-in-charge-of-your-code.git
git push -u origin master
Repository
github.com
Kevin's Laptop
localhost
cd already-existing-code/
git init
git remote add origin https://github.com/wirthdesign/git-in-charge-of-your-code.git
git add -A
git commit -m "First commit"
git push -u origin master
Repository
github.com
Kevin's Laptop
localhost
The pull command will bring in the latest changes pushed to your repo.
Repository
github
Kevin's Laptop
localhost
Use this git command to remove a file from your repository. If removing a directory you need to pass additional options.
git rm README.md
rm 'README.md'
git rm -r cheeseburgers/
rm cheeseburgers/
Use this git command to add files individually or pass -A to add all files with uncommitted changes.
git add path/to-the/file/README.md
git add -A
The clone command will pull down a repository you don't have already.
cd Sites/
git clone https://github.com/wirthdesign/spaceapps.git
Cloning into 'spaceapps'...
remote: Counting objects: 977, done.
remote: Total 977 (delta 0), reused 0 (delta 0), pack-reused 977
Receiving objects: 100% (977/977), 2.19 MiB | 1.36 MiB/s, done.
Resolving deltas: 100% (469/469), done.
Checking connectivity... done.
Repository
github.com/wirthdesign/spaceapps
Kevin's Laptop
localhost
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: README.md
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: app/assets/javascripts/templates/layouts/profile.hbs
modified: app/assets/javascripts/templates/profiles/file_attachments.hbs
modified: app/assets/stylesheets/sass/style.scss
modified: app/assets/stylesheets/style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
app/assets/images/icons/attachments-blue.png
app/assets/images/icons/attachments-blue_2x.png
app/assets/images/icons/attachments-gray.png
app/assets/images/icons/attachments-gray_2x.png
no changes added to commit (use "git add" and/or "git commit -a")
git reset --hard
HEAD is now at 323532e first commit
Repository
github.com
Kevin's Laptop
localhost
The master branch is sacred! Keep it production ready in case of an emergency fix. All new features or fixes should go into branches.
source
git branch add-paypal-integration
git checkout add-paypal-integration
Switched to branch 'add-paypal-integration'
git add -A
git commit -m "Added PayPal integration to payment methods."
[add-paypal-integration 3598464] Added PayPal integration to payment methods.
6 files changed, 6 insertions(+)
create mode 100644 classes/
create mode 100644 classes/paypal.php
create mode 100644 classes/paypal/
create mode 100644 classes/paypal/expresscheckout.php
create mode 100644 config/
create mode 100644 config/paypal.php
git push --set-upstream origin add-paypal-integration
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 265 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To https://github.com/wirthdesign/git-in-charge-of-your-code.git
* [new branch] add-paypal-integration -> add-paypal-integration
Branch new-feature set up to track remote branch new-feature from origin.
git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
git merge add-paypal-integration
Updating 323532e..3598464
Fast-forward
classes/ | 1 +
classes/paypal.php | 1 +
classes/paypal/ | 1 +
classes/paypal/expresscheckout.php | 1 +
config/ | 1 +
config/paypal.php | 1 +
6 files changed, 6 insertions(+)
create mode 100644 classes/
create mode 100644 classes/paypal.php
create mode 100644 classes/paypal/
create mode 100644 classes/paypal/expresscheckout.php
create mode 100644 config/
create mode 100644 config/paypal.php
git push
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/wirthdesign/git-in-charge-of-your-code.git
323532e..3598464 master -> master
Sometimes when you pull or merge code you will get file conflicts. Conflicts need to be resolved and appear in your terminal with a C next to them.
<html>
<head>
<title>Put a bird on it!</title>
</head>
<body>
<h1>Let's put a bird on it!</h1>
<<<<<<< HEAD
<p>The dog is BLUE</p>
=======
<p>The cat is WOOF</p>
>>>>>>> 213123213124141241234124
</body>
</html>
<html>
<head>
<title>Put a bird on it!</title>
</head>
<body>
<h1>Let's put a bird on it!</h1>
<p>The dog is BLUE</p>
</body>
</html>
Understanding the GitHub Flow
https://guides.github.com/introduction/flow/
Git Branching - Basic Branching and Merging
http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging