Skip to main content

UCLA Git Walkthrough (for Moodle)

Very basic guide how to get GIT set up on Windows or OSX.

Documentation:

Setting up the Environment

Windows

Mac OSX

Install Git for OSX:

  • Standalone package:
    • Grab the latest git installer for your version of osx from Git for OSX
    • Run the contained pkg
    • If you want git to be accessible via the PATH and MANPATH variables for non-terminal programs, run the included shell script.
  • MacPorts:
    • sudo port install git-core

Generate an SSH Key:

Configure Line Endings

  • In order to avoid issues with line endings when cloning on to Windows machines, follow the directions here: Dealing with line endings

Setting up Git global configs

Before making commits, it is useful to add your name and email:

  • git config —global user.name “Your Name”
  • git config —global user.email “yourmail@domain.tld

If you want to connect to github without SSH you need a token:

Setting up github repository:

  • Go to https://github.com/moodle/moodle, click “fork”
  • Got to Admin→Collaborators→Add (add any number of collaborators to the project)
  • Checkout a local copy of the forked code
    • With Github Token
    • With SSH RSA-key
      • git clone gitgithub.com:ucla/moodle.git ./YOUR_LOCAL_MOODLE_FOLDER/@

Execute the following commands:

  • git branch TEST
  • git push origin TEST
  • git branch STAGE
  • git push origin STAGE
  • git branch SSC
  • git push origin SSC

New Features

  1. git clone https://YOUR_GITHUB_USERNAMEgithub.com/ucla/moodle.git ./YOUR_LOCAL_MOODLE_FOLDER/@
  2. git checkout master
  3. git checkout -b <feature_name>
  4. change file—
  5. git commit -a -m "updating README.txt to include basic git instructions"
  6. git push origin <feature_name>
    (Repeat above 3 steps as needed)
  7. git rebase origin/master
  8. git checkout DEV
  9. git merge --no-ff <feature_name>
  10. git push origin DEV

Bug Fixes

Get changes onto TEST

  1. git checkout TEST
  2. git merge --no-ff <feature_name>
  3. git push origin TEST

Get changes onto STAGE

  1. git checkout STAGE
  2. git merge --no-ff <feature_name>
  3. git push origin STAGE

Get changes onto master

  1. git checkout master
  2. git merge --no-ff <feature_name>
  3. git push origin master

Get changes onto SSC

  1. git checkout SSC
  2. git merge --no-ff <feature_name>
  3. git push origin SSC

Updating DEV from moodle.org

  • git checkout DEV
  • git remote add upstream https://github.com/moodle/moodle.git
  • git fetch upstream
  • git merge -m "upgrading Moodle to version X.Y" <commit_hash>
  • START RESOLVE CONFLICTS
  • git add <conflicted_file>
  • git add <conflicted_file>
  • git commit -m "upgrading Moodle to version X.Y"
  • DONE RESOLVE CONFLICTS
  • git push origin DEV