Intermediate level

  • Get DiffMerge to work with your git toolset.

Diffmerge is use for comparing two files in order to find differences between them. I used the link Ken provided:

Its a really useful tool when you see it in action. The left file is the original file and the right file is the file showing the changes I made. To use diffmerge we need to the terminal by typing the command

git difftool index.html

Screen Shot 2015-09-22 at 9.27.26 AM

Screen Shot 2015-09-22 at 9.25.03 AM

Now I worked with Alex and I fork his repository and created an html file for his project. I submitted a pull request so he could check it and accept my changes or denied them.

On the other hand, he did the same process as me and sent me a pull request because he created a file my project needed. I accept the proposal and the new file is now visible in my repo.

Screen Shot 2015-09-22 at 9.56.30 AM Screen Shot 2015-09-22 at 9.56.47 AM Screen Shot 2015-09-22 at 9.59.52 AM

Github pages:

I created a github page with my account, currently I only made the setup but doesnt have all my info or design. I plan to take advantage of this webpage so I can upload information about me and use it as a portfolio/resume.

The URL is

Also, I made the connection with twitter and the i-week repo. So each time I made a new commit it makes a tweet.

Screen Shot 2015-09-22 at 11.58.38 AM

Basic level

  • Check status of your local repository. What are the possible states?

The three possible states of a repository are untracked, unmodified, modified and staged. We can check the status using git status. The status can be seen as lifecycle of our documents.

Screen Shot 2015-09-21 at 11.03.30 AM

  • How to view the history or log of your repository. Why is this useful?

You can check the log of a repository using the command git log inside the terminal. It shows the date and time, the author of the commit and an unique ID for the commit.

Screen Shot 2015-09-21 at 11.18.00 AM

If we are using the web page, we can click on the clock icon named commit. If we click here it show the log of our repo. This is useful to check what other commits we have made and if we made a mistake we can go back in time to check what we had. Also, if we are collaborating in a project its easy to see others people contributions.

Screen Shot 2015-09-21 at 11.24.51 AM

  • Ensure you understand the states of objects in a repository (untracked, unmodified, modified, staged), see this diagram from the webpage resource at


Files can be in two states tracked or untracked. So when we upload our files to github these will be tracked and unmodified. Everytime we modified a file inside our repo this will change into modified state, then file changes to a staged file which mean is ready to be commited. When we commit the file returns to a unmodified states.

  • Push changes to GitHub from your local repository

I modified locally a file and then push it using the terminal

Screen Shot 2015-09-21 at 12.12.36 PM

  • Pull changes from GitHub to your local repository.
  • For the pull I forked the example repository called Spoon-Knife. I made a branch and then edit the readme. Once I made the changes I open a pull request.
  • Screen Shot 2015-09-21 at 10.39.46 AMScreen Shot 2015-09-21 at 10.41.19 AM
  • To understant how pull works. I used the git documentation:
  • Create an use Tags at the local repository level.
  • Push and  pull tags to the remote (GitHub) repository.

I created a tag called v0.1 and I pushed it to github.

Screen Shot 2015-09-21 at 12.38.50 PM

I created another tag called v1.1 and pulled it to my local repo.

Screen Shot 2015-09-21 at 12.42.16 PM

For leaning more about tags I used:

  • Setup git aliases for your local configuration.

Aliases are keyboard shortcuts for git. Instead of typing git status we can only type git st. We can any alias like this:

git config --global checkout
Screen Shot 2015-09-21 at 1.08.38 PM

I learned more about alias in here:

  • Get git to ignore certain files. Why do we want to do this?

I created a .gitignore using the terminal, then I had to push it to my remote repository. I decided to ignore some .pyc and .DS_Store. This is useful if we have some byte codes or file that contains metadata from a OS. Also, if our project gets bigger ignoring elements like .class, .o, .pyc can be useful so every time we run git status we can concentrate only on those file that need to be tracked.

Screen Shot 2015-09-21 at 4.25.16 PM

  • Check out how Git is supported in your favorite editor. Does it just show information or does it have support for Git commands?

Atom have integration with git, we have some command like git status, we can check the head revision, diffs, etc. We cant do pull or commit with the current Atom core, but you can install a package called git-plus and you can perform those operations.


I already had a github account so I skipped right to creating a new repository.

Screen Shot 2015-09-21 at 9.25.34 AM

I created a new repository using the Github web interface. I named it i-Week.

I cloned it using the GUI client for Mac. I cloned the i-Week project and make a fork of Spoon-Knife and then cloned it.

Local repository

Screen Shot 2015-09-21 at 10.13.50 AM

For the next part I created a two files called hello.txt and a file.txt. I commited one using the GUI client and the other one using the terminal.

Screen Shot 2015-09-21 at 9.24.49 AM

I deleted the file.txt from my local repository. Github has a commit timeline so I can check in my account the commits I made today.

Screen Shot 2015-09-21 at 9.27.59 AM

I edit the file using the web interface

Screen Shot 2015-09-21 at 9.29.24 AM

Created a new file using the web interface

Screen Shot 2015-09-21 at 9.36.16 AM

To delete the file we need to click on it and then click the trash can.

Screen Shot 2015-09-21 at 9.38.02 AM