Skip to content
Michael Wetter edited this page Mar 17, 2013 · 9 revisions

Git Information

Below are information for a typical workflow. We follow the branching model described in http://nvie.com/posts/a-successful-git-branching-model. Hence, all development forks of and, once it is tested and stable, merges into the develop branch. The master branch only gets updated with code that is close to a release.

Make changes on the master of your own fork

To fork the main branch to your own repository, make changes there, and issue a pull request, proceed as follows:

First, on the web interface, press Fork to fork the repository to your account. Next, run

git clone https://github.com/YOUR_LOGIN/modelica-buildings.git
# Make some changes
cd modelica-buildings/
# Add a remote upstream so that you can get changes from the develop branch
git remote add upstream https://github.com/lbl-srg/modelica-buildings.git
# Fetch upstream changes, without changing local files
git fetch upstream
emacs README.md 
git commit -m "Made changes to README.md" README.md
# Merge the changes from the upstream master (the main repo) with your local files
git merge upstream/develop
# Push the changes to your repository
git push

Finally, on the web interface of your account, issue a Pull Request so that the changes are merged to the develop branch.

Make changes using a branch of the develop branch

To add a new feature, we branch of from the develop branch, add the feature, and when it is stable, merge it back to the develop branch. As an example, we show below how to modify the README.md file using a branch we call updateReadme.

git clone https://github.com/lbl-srg/modelica-buildings.git
  Cloning into 'modelica-buildings'...
  remote: Counting objects: 68, done.
  remote: Compressing objects: 100% (35/35), done.
  remote: Total 68 (delta 13), reused 66 (delta 11)
  Unpacking objects: 100% (68/68), done.
cd modelica-buildings/
git branch
  * develop
git checkout develop
  Already on 'develop'
git checkout -b updateReadme
  Switched to a new branch 'updateReadme'
git branch
    develop
  * updateReadme
echo "Added a line in updateReadme" >> README.md 
git commit -m "Updated README.md" README.md 
  [updateReadme 25b562c] Updated README.md
   1 file changed, 1 insertion(+)
git push origin updateReadme
  Counting objects: 5, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (3/3), done.
  Writing objects: 100% (3/3), 397 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To https://github.com/lbl-srg/modelica-buildings.git
   * [new branch]      updateReadme -> updateReadme
echo "Added a second line in updateReadme" >> README.md 
git commit -m "Updated README.md a second time" README.md 
  [updateReadme f8f29c5] Updated README.md a second time
   1 file changed, 1 insertion(+)
git push
  Counting objects: 5, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (3/3), done.
  Writing objects: 100% (3/3), 384 bytes, done.
  Total 3 (delta 1), reused 0 (delta 0)
  To https://github.com/lbl-srg/modelica-buildings.git
     25b562c..f8f29c5  updateReadme -> updateReadme
git checkout develop
  Switched to branch 'develop'
git merge updateReadme
  Updating 7034cfd..f8f29c5
  Fast-forward
   README.md |    2 ++
   1 file changed, 2 insertions(+)
git push
  Total 0 (delta 0), reused 0 (delta 0)
  To https://github.com/lbl-srg/modelica-buildings.git
     7034cfd..f8f29c5  develop -> develop

Note that in the first push command, we used git push origin updateReadme to have the branch pushed to the github servers.

Finally, we delete the branch updateReadme on the server and the local repository.

git push origin --delete updateReadme
  To https://github.com/lbl-srg/modelica-buildings.git
   - [deleted]         updateReadme
git branch -D updateReadme
  Deleted branch updateReadme (was f8f29c5).