LabGit 01: Getting Started with Git


Maintained by: mikerb@mit.edu         Get PDF


1  Overview and Objectives
2  Getting Started with Git on Your Laptop
     2.1 How to tell if Git is Already Installed
     2.2 Getting Git in GNU/Linux
     2.3 Getting Git in macOS
3  Using Git to clone an Existing Repository
     3.1 Cloning the MOOS-IvP Repository from GitHub
     3.2 Build the MOOS-IvP Source Code and Run It
     3.3 Getting Info on a Repo's Origin
     3.4 Looking at Recent Commit Log
     3.5 Looking at Recent Commit Hash
4  Configure your Git Environment


1   Overview and Objectives


Goals for this lab:

  • Ensure Git is Installed on Your Laptop
  • Download the MOOS-IvP Repository from GitHub Onto Your Laptop
  • Get Started with Command-line Git

In this lab, the MOOS-IvP repository is the target initial repo to obtain via git, mainly because it is the first required repo for the MIT 2.680 course and other lab projects. Other than that, everything else below applies generally even if some other repo besides MOOS-IvP will be your initial repo to work with. For some readers, their entry into git will be when they want to migrate a project, existing on a local laptop not under version control, into Git. In this case, starting with Lab 02 may be more appropriate.

2   Getting Started with Git on Your Laptop


Git is a version control software that allows users to develop source code in a distributed manner, keeping track of changes, conflicts and versions. You will be highly encouraged to use Git or a similarly capable version control tool during the course. But for now, we focus just on installing Git and knowing just enough to check out software from the web to be used in the course.

2.1   How to tell if Git is Already Installed    [top]


Your machine may already have a version of git installed. It is typically preinstalled on macOS, and may be preinstalled in some Linux distros as well. To check, try:

  $ which git
  /usr/bin/git   (or perhaps /bin/git on Linux)

If you get a response like the one above, you're all set. If git is not installed you will get a response like the one below:

  $ which git
  git: command not found

Or no response at all:

  $ which git
  $ 

If the which command is telling you it cannot find the git command, you probably just don't have git installed. However it may be that you simply don't have the directory containing the git executable in your shell path. To rule this out, try the following (if using macOS, or GNU/Linux):

  $ cd /usr/bin
  $ which ./git
  ./git

To check if git is already installed via another method (i.e. MacPorts), try:

  $ cd /opt/local/bin       (or /usr/local/bin)
  $ which ./git
  ./git

If you see the above, it is simply a matter of adding directory to your shell path. Do this now, or see the help topic on augmenting your shell path:

http://oceanai.mit.edu/ivpman/help/help_cmd_shellpath

2.2   Getting Git in GNU/Linux    [top]


If you're running GNU/Linux you probably have access to a package manager such as apt and already know how to use it to some degree. To install packages like Git, you need root privileges. Assuming your user account has root privileges, do the following, and enter your normal login password if prompted:

  $ sudo apt install git

See the discussion above on how to confirm whether git has been successfully installed, and adjust your shell path if need be.

2.3   Getting Git in macOS    [top]


If you're running on a Mac (macOS) you can use MacPorts or Homebrew to install Git. If you haven't installed either of these package managers, see the separate help topic on this. To install packages like Git, you may need root (admin) privileges. Assuming your user account has the necessary privileges, do the following, and enter your normal login password when or if prompted:

  $ sudo brew install git (if using HomeBrew)

Or if you are using MacPorts as a package manager:

  $ sudo port install git   (if using MacPorts)

See the discussion above on how to confirm whether git has been successfully installed, and adjust your shell path if need be.

3   Using Git to clone an Existing Repository


The Git executable is git and takes a number of arguments on the command line for interacting with a software repository. The most essential is the command to clone, i.e., download, a repository from a server.

  $ git clone <url> [<destination>]

In this section the git clone command will be used for obtaining the MOOS-IvP repository. It is a publicly available repo, with no password required, and is essential for classwork in MIT 2.680 and generally in the MIT Marine Autonomy Lab.

3.1   Cloning the MOOS-IvP Repository from GitHub    [top]


The MOOS-IvP project is on GitHub and can be downloaded/cloned/pulled onto your local machine, essentially as a read-only copy. Below is the git command for checking out the MOOS-IvP software repository:

  $ git clone https://github.com/moos-ivp/moos-ivp.git
   ...
  $ ls
  moos-ivp/ 

A clone essentially results in the download of a directory from a server. Once the directory/folder/tree is on your machine you can of course modify anything in the tree on your machine, but you will not be able to apply those changes to the GitHub version.

Note the [<destination>] part of the git clone command is optional. If ommitted as above, the name of the folder will be the basename of URL, e.g., the moos-ivp part of moos-ivp.git.

    o Build the tree

    o Build the alpha mission

3.2   Build the MOOS-IvP Source Code and Run It    [top]


Once the tree is downloaded, you should be able to build the code and run the Alpha mission.

  1. Look inside the README file in the moos-ivp folder and follow the instructions for downloading/installing dependencies. They vary depending on whether you are on a Mac or Linux machine.
  2. Build the code.
 $ cd moos-ivp
 $ ./build.sh
  1. Run the alpha mission
 $ cd moos-ivp/ivp/missions/s1_alpha
 $ ./launch.sh 10                        (10 is the time warp)

It should look something like:

Figure 3.1: A screen shot of the Alpha example mission shortly after launch.

3.3   Getting Info on a Repo's Origin    [top]


After a repo has been cloned, you may find yourself later wanting to remember where it was cloned from. You can try the following:

  $ cd ~/moos-ivp
  $ git remote show origin
  * remote origin
    Fetch URL: https://github.com/moos-ivp/moos-ivp.git
    Push  URL: https://github.com/moos-ivp/moos-ivp.git
    HEAD branch: main
    Remote branches:
      moos-ivp-22.8               tracked
      moos-ivp-22.8.1             tracked
      moos-ivp-24.8               tracked
    Local branch configured for 'git pull':
      main merges with remote main
    Local ref configured for 'git push':
      main pushes to main (up to date)

Here you can see the github URL "https://github.com/moos-ivp/moos-ivp.git". This can be used anywhere to clone the repo from github as shown earlier:

  $ git clone https://github.com/moos-ivp/moos-ivp.git

3.4   Looking at Recent Commit Log    [top]


Git has a history of commits and revisions, and it's all stored in the .git folder in the top level of the repo. The log can be viewed with the below command. In this case only the most two recent entries are shown, due to the -n 2 arguments.

  $ cd ~/moos-ivp
  $ git log -n 2 --pretty=short
  commit ed377ae7d8ab8f2ec9ce5c77aded8df91a0f73fc (HEAD -> main, origin/main, origin/HEAD)
  Author: Mike Benjamin <mikerb@csail.mit.edu>

     moved from sprintf to snprintf for utils in MBUtils

  commit b00b505ec7b533cce19b9bddf9eef48d99c2c763
  Author: Mike Benjamin <mikerb@csail.mit.edu>

     minor mods to LegRun OpReg and Waypoint bhvs

Notice the full hash of the most recent commit:

ed377ae7d8ab8f2ec9ce5c77aded8df91a0f73fc

3.5   Looking at Recent Commit Hash    [top]


Each git commit has a unique hash value. A full has is 40 characters. The short vesion of the hash is first group of characters of the full hash, typically nine characters. The hash of the most recent commit can be obtained with:

  $ git rev-parse HEAD
  ed377ae7d8ab8f2ec9ce5c77aded8df91a0f73fc

Or the just the short part of the hash:

  $ git rev-parse --short HEAD
  ed377ae7d

4   Configure your Git Environment


When committing changes to a repository, Git creates an attribution record so the author can be identified. You can tell Git what name and email address you want associated with your commits by setting the global defaults:

  $ git config --global user.email "your_email@example.com"
  $ git config --global user.name  "Your Name"

    Alternatively, you can remove the --global argument to set repo-specific defaults; the default behavior is equivalent to setting the --local argument explicitly. This is useful when you mange both personal and work repositories, and you want to ensure the system employs the correct email address for each case.

    To check the local and global configurations, you can use the following commands:

  $ git config --local --list     #(invoked within a checked out tree)
  $ git config --global --list    #(can be invoked anywhere; reads ~/.gitconfig)

More can be learned about Git online. There are numerous help pages, cheat sheets, and the official Git book is even free online. On this course website we do have a few help pages of our own you can check out:


Document Maintained by: mikerb@mit.edu        
Page built from LaTeX source using texwiki, developed at MIT. Errata to issues@moos-ivp.org. Get PDF