Commit abf4e87a authored by ADGDT's avatar ADGDT

Initial commit

Please delete the text below before submitting your contribution.
Thanks for contributing! If this contribution is for instructor training, please send an email to with a link to this contribution so we can record your progress. You’ve completed your contribution step for instructor checkout just by submitting this contribution.
Please keep in mind that lesson maintainers are volunteers and it may be some time before they can respond to your contribution. Although not all contributions can be incorporated into the lesson materials, we appreciate your time and effort to improve the curriculum. If you have any questions about the lesson maintenance process or would like to volunteer your time as a contribution reviewer, please contact Kate Hertweck (
Please delete the text below before submitting your contribution.
Thanks for contributing! If this contribution is for instructor training, please send an email to with a link to this contribution so we can record your progress. You’ve completed your contribution step for instructor checkout just by submitting this contribution.
Please keep in mind that lesson maintainers are volunteers and it may be some time before they can respond to your contribution. Although not all contributions can be incorporated into the lesson materials, we appreciate your time and effort to improve the curriculum. If you have any questions about the lesson maintenance process or would like to volunteer your time as a contribution reviewer, please contact Kate Hertweck (
Abigail Cabunoc Mayes <>
Abigail Cabunoc Mayes <> <>
Alois Heilmaier <>
Andrew Lonsdale <>
Andrew Rohl <>
Ariel Rokem <>
Arnstein Orten <>
Bennet Fauber <>
Bérénice Batut <>
Bérénice Batut <> <>
Bernhard Konrad <>
Bill Mills <>
Brenna O'Brien <>
Chris Pawsey <>
Christoph Junghans <> <>
Daisie Huang <>
Danielle Traphagen <>
Dorota Jarecka <>
Emily Dolson <>
Emmanouil Farsarakis <> <>
Erin Becker <>
Evan P. Williamson <>
François Michonneau <>
Greg Watson <>
Greg Wilson <> <>
Ivan Gonzalez <> <>
James Allen <> <>
Jane Charlesworth <>
Kate Lee <>
Luke W. Johnston <>
Marisa Guarinello <>
Mark Wheelhouse <>
Mary C. Kinniburgh <>
Mateusz Kuzak <>
Matthias Haeni <>
Maxim Belkin <> <>
Michael Panitz <>
Mike Jackson <> <>
Nicholas Hannah <> <>
Nicola Soranzo <> <>
Patrick C. Shriwise <>
Pauline Barmby <>
Peter Steinbach <> <>
Raniere Silva <> <>
Raniere Silva <> <>
Rémi Emonet <> <remi.emonet@reverse--com.heeere>
Rémi Emonet <> <>
Sarah Stevens <> <>
Sean Aubin <>
Steve Vandervalk <> <>
Tiffany Timbers <>
Timothée Poisot <> <>
Tom Kelly <>
Vijay P. Nagraj <>
Yuandra Ismiraldi <>
zz-abracarambar <>
vcs: Git
authors: yes
files: no
Alison Appling
Sean Aubin
Pete Bachant
Daniel Baird
Pauline Barmby
Bérénice Batut
Maxim Belkin
Madeleine Bonsma
Jon Borrelli
Andy Boughton
Daina Bouquin
Rudi Brauning
Matthew Brett
Amy Brown
Jane Charlesworth
Billy Charlton
Daniel Chen
Garret Christensen
Ruth Collings
Marianne Corvellec
Matt Davis
Emily Dolson
Laurent Duchesne
Jonah Duckles
Rémi Emonet
Loïc Estève
Emmanouil Farsarakis
Bennet Fauber
Anne Fouilloux
Stuart Geiger
Ivan Gonzalez
Marisa Guarinello
Stéphane Guillou
Jamie Hadwin
Matthias Haeni
Pierre Haessig
Nicholas Hannah
Sumana Harihareswara
Alois Heilmaier
Martin Heroux
Kate Hertweck
Daisie Huang
Yuandra Ismiraldi
Christian Jacobs
Dorota Jarecka
Luke W. Johnston
David Jones
Zbigniew Jędrzejewski-Szmek
Tom Kelly
W. Trevor King
Thomas Kluyver
Bernhard Konrad
Mateusz Kuzak
Arne Küderle
Kathleen Labrie
Hilmar Lapp
Mark Laufersweiler
David LeBauer
Kate Lee
Matthias Liffers
Clara Llebot
Catrina Loucks
Keith Ma
Kunal Marwaha
Ryan May
Bill Mills
Andreas Mueller
Madicken Munk
Juan Nunez-Iglesias
Brenna O'Brien
Catherine Olsson
Michael Panitz
Chris Pawsey
Stefan Pfenninger
Paul Preney
Timothy Rice
Kristina Riemer
Annika Rockenberger
Andrew Rohl
Ariel Rokem
Bill Sacks
Michael Sarahan
Sebastian Schmeier
Hartmut Schmider
Peter Shellito
Patrick C. Shriwise
Raniere Silva
Brendan Smithyman
Nicola Soranzo
Peter Steinbach
Sarah Stevens
Oliver Stueker
Benjamin Stuermer
Tiffany Timbers
Danielle Traphagen
Tim Tröndle
Anelda van der Walt
Steve Vandervalk
Greg Watson
Belinda Weaver
Mark Wheelhouse
Ethan White
Greg Wilson
Steven Wu
Qingpeng Zhang
Andrew Lonsdale
Arnstein Orten
Ben Bolker
Christoph Junghans
David Jennings
James Tocknell
Jonathan Cooper
Katrin Leinweber
Leo Browning
Mary C. Kinniburgh
Matthew Bourque
Matthew Hartley
Raphaël Grolimund
Scott Bailey
Todd Gamblin
Tommy Keswick
Vijay P. Nagraj
Will Usher
Please cite as:
Daisie Huang and Ivan Gonzalez (eds): "Software Carpentry: Version
Control with Git." Version 2016.06, June 2016,, 10.5281/zenodo.57467.
layout: page
title: "Contributor Code of Conduct"
permalink: /conduct/
As contributors and maintainers of this project,
we pledge to respect all people who contribute through reporting issues,
posting feature requests,
updating documentation,
submitting pull requests or patches,
and other activities.
We are committed to making participation in this project a harassment-free experience for everyone,
regardless of level of experience,
gender identity and expression,
sexual orientation,
personal appearance,
body size,
or religion.
Examples of unacceptable behavior by participants include the use of sexual language or imagery,
derogatory comments or personal attacks,
public or private harassment,
or other unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to our [Code of Conduct][coc].
Project maintainers who do not follow the Code of Conduct may be removed from the project team.
Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by following our [reporting guidelines][coc-reporting].
- [Software and Data Carpentry Code of Conduct][coc]
- [Code of Conduct Reporting Guide][coc-reporting]
{% include %}
# Contributing
[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,
and we welcome contributions of all kinds:
new lessons,
fixes to existing material,
bug reports,
and reviews of proposed changes are all welcome.
## Contributor Agreement
By contributing,
you agree that we may redistribute your work under [our license](
In exchange,
we will address your issues and/or assess your change proposal as promptly as we can,
and help you become a member of our community.
Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]
agrees to abide by our [code of conduct](
## How to Contribute
The easiest way to get started is to file an issue
to tell us about a spelling mistake,
some awkward wording,
or a factual error.
This is a good way to introduce yourself
and to meet some of our community members.
1. If you do not have a [GitHub][github] account,
you can [send us comments by email][contact].
we will be able to respond more quickly if you use one of the other methods described below.
2. If you have a [GitHub][github] account,
or are willing to [create one][github-join],
but do not know how to use Git,
you can report problems or suggest improvements by [creating an issue][new-issue].
This allows us to assign the item to someone
and to respond to it in a threaded discussion.
3. If you are comfortable with Git,
and would like to add or change material,
you can submit a pull request (PR).
Instructions for doing this are [included below](#using-github).
## Where to Contribute
1. If you wish to change this lesson,
please work in <>,
which can be viewed at <>.
2. If you wish to change the example lesson,
please work in <>,
which documents the format of our lessons
and can be viewed at <>.
3. If you wish to change the template used for workshop websites,
please work in <>.
The home page of that repository explains how to set up workshop websites,
while the extra pages in <>
provide more background on our design choices.
4. If you wish to change CSS style files, tools,
or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,
please work in <>.
## What to Contribute
There are many ways to contribute,
from writing new exercises and improving existing ones
to updating or filling in the documentation
and submitting [bug reports][new-issue]
about things that don't work, aren't clear, or are missing.
If you are looking for ideas,
please see [the list of issues for this repository][issues],
or the issues for [Data Carpentry][dc-issues]
and [Software Carpentry][swc-issues] projects.
Comments on issues and reviews of pull requests are just as welcome:
we are smarter together than we are on our own.
Reviews from novices and newcomers are particularly valuable:
it's easy for people who have been using these lessons for a while
to forget how impenetrable some of this material can be,
so fresh eyes are always welcome.
## What *Not* to Contribute
Our lessons already contain more material than we can cover in a typical workshop,
so we are usually *not* looking for more concepts or tools to add to them.
As a rule,
if you want to introduce a new idea,
you must (a) estimate how long it will take to teach
and (b) explain what you would take out to make room for it.
The first encourages contributors to be honest about requirements;
the second, to think hard about priorities.
We are also not looking for exercises or other material that only run on one platform.
Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;
in order to be usable,
our lessons must run equally well on all three.
## Using GitHub
If you choose to contribute via GitHub,
you may want to look at
[How to Contribute to an Open Source Project on GitHub][how-contribute].
In brief:
1. The published copy of the lesson is in the `gh-pages` branch of the repository
(so that GitHub will regenerate it automatically).
Please create all branches from that,
and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch
before starting work.
Please do *not* work directly in your `gh-pages` branch,
since that will make it difficult for you to work on other contributions.
2. We use [GitHub flow][github-flow] to manage changes:
1. Create a new branch in your desktop copy of this repository for each significant change.
2. Commit the change in that branch.
3. Push that branch to your fork of this repository on GitHub.
4. Submit a pull request from that branch to the [master repository][repo].
5. If you receive feedback,
make changes on your desktop and push to your branch on GitHub:
the pull request will update automatically.
Each lesson has two maintainers who review issues and pull requests
or encourage others to do so.
The maintainers are community volunteers,
and have final say over what gets merged into the lesson.
## Other Resources
General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]
happens on the [discussion mailing list][discuss-list],
which everyone is welcome to join.
You can also [reach us by email][contact].
layout: page
title: "Licenses"
permalink: /license/
## Instructional Material
All Software Carpentry and Data Carpentry instructional material is
made available under the [Creative Commons Attribution
license][cc-by-human]. The following is a human-readable summary of
(and not a substitute for) the [full legal text of the CC BY 4.0
You are free:
* to **Share**---copy and redistribute the material in any medium or format
* to **Adapt**---remix, transform, and build upon the material
for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the
license terms.
Under the following terms:
* **Attribution**---You must give appropriate credit (mentioning that
your work is derived from work that is Copyright © Software
Carpentry and, where practical, linking to, provide a [link to the
license][cc-by-human], and indicate if changes were made. You may do
so in any reasonable manner, but not in any way that suggests the
licensor endorses you or your use.
**No additional restrictions**---You may not apply legal terms or
technological measures that legally restrict others from doing
anything the license permits. With the understanding that:
* You do not have to comply with the license for elements of the
material in the public domain or where your use is permitted by an
applicable exception or limitation.
* No warranties are given. The license may not give you all of the
permissions necessary for your intended use. For example, other
rights such as publicity, privacy, or moral rights may limit how you
use the material.
## Software
Except where otherwise noted, the example programs and other software
provided by Software Carpentry and Data Carpentry are made available under the
[MIT license][mit-license].
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
## Trademark
"Software Carpentry" and "Data Carpentry" and their respective logos
are registered trademarks of [NumFOCUS][numfocus].
## ========================================
## Commands for both workshop and lesson websites.
# Settings
MAKEFILES=Makefile $(wildcard *.mk)
# Controls
.PHONY : commands clean files
all : commands
## commands : show all commands.
commands :
@grep -h -E '^##' ${MAKEFILES} | sed -e 's/## //g'
## serve : run a local server.
serve : lesson-md
${JEKYLL} serve
## site : build files but do not run a server.
site : lesson-md
${JEKYLL} build
# repo-check : check repository settings.
repo-check :
@bin/ -s .
## clean : clean up junk files.
clean :
@rm -rf ${DST}
@rm -rf .sass-cache
@rm -rf bin/__pycache__
@find . -name .DS_Store -exec rm {} \;
@find . -name '*~' -exec rm {} \;
@find . -name '*.pyc' -exec rm {} \;
## clean-rmd : clean intermediate R files (that need to be committed to the repo).
clear-rmd :
@rm -rf ${RMD_DST}
@rm -rf fig/rmd-*
## ----------------------------------------
## Commands specific to workshop websites.
.PHONY : workshop-check
## workshop-check : check workshop homepage.
workshop-check :
@bin/ .
## ----------------------------------------
## Commands specific to lesson websites.
.PHONY : lesson-check lesson-md lesson-files lesson-fixme
# RMarkdown files
RMD_SRC = $(wildcard _episodes_rmd/??-*.Rmd)
RMD_DST = $(patsubst _episodes_rmd/%.Rmd,_episodes/,$(RMD_SRC))
# Lesson source files in the order they appear in the navigation menu.
MARKDOWN_SRC = \ \ \ \
$(wildcard _episodes/*.md) \ \
$(wildcard _extras/*.md) \
# Generated lesson files in the order they appear in the navigation menu.
${DST}/index.html \
${DST}/conduct/index.html \
${DST}/setup/index.html \
$(patsubst _episodes/,${DST}/%/index.html,$(wildcard _episodes/*.md)) \
${DST}/reference/index.html \
$(patsubst _extras/,${DST}/%/index.html,$(wildcard _extras/*.md)) \
## lesson-md : convert Rmarkdown files to markdown
lesson-md : ${RMD_DST}
# Use of .NOTPARALLEL makes rule execute only once
@bin/ ${RMD_SRC}
## lesson-check : validate lesson Markdown.
lesson-check :
@bin/ -s . -p ${PARSER} -r _includes/
## lesson-check-all : validate lesson Markdown, checking line lengths and trailing whitespace.
lesson-check-all :
@bin/ -s . -p ${PARSER} -l -w
## lesson-figures : re-generate inclusion displaying all figures.
lesson-figures :
@bin/ -p ${PARSER} ${MARKDOWN_SRC} > _includes/all_figures.html
## unittest : run unit tests on checking tools.
unittest :
python bin/
## lesson-files : show expected names of generated files for debugging.
lesson-files :
@echo 'RMD_SRC:' ${RMD_SRC}
@echo 'RMD_DST:' ${RMD_DST}
@echo 'HTML_DST:' ${HTML_DST}
## lesson-fixme : show FIXME markers embedded in source files.
lesson-fixme :
@fgrep -i -n FIXME ${MARKDOWN_SRC} || true
# Include extra commands if available.
An introduction to version control for novices using Git.
Please see <> for a rendered version of this material,
[the lesson template documentation][lesson-example]
for instructions on formatting, building, and submitting material,
or run `make` in this directory for a list of helpful commands.
* [Ivan Gonzalez][gonzalez_ivan]
* [Daisie Huang][huang_daisie]
# Values for this lesson.
# Which carpentry is this ("swc" or "dc")?
carpentry: "swc"
# Overall title for pages.
title: "Version Control with Git"
# Contact email address.
# Generic settings (should not need to change).
# What kind of thing is this ("workshop" or "lesson")?
kind: "lesson"
# Magic to make URLs resolve both locally and on GitHub.
# See
repository: <USERNAME>/<PROJECT>
# Sites.
amy_site: ""
dc_site: ""
swc_github: ""
swc_site: ""
swc_pages: ""
template_repo: ""
example_repo: ""
example_site: ""
workshop_repo: ""
workshop_site: ""
training_site: ""
# Surveys.
pre_survey: ""
post_survey: ""
# Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am)
start_time: 0
# Specify that things in the episodes collection should be output.
output: true
permalink: /:path/
output: true
# Set the default layout for things in the episodes collection.
- values:
root: ..
- scope:
path: ""
type: episodes
layout: episode
# Files and directories that are not to be copied.
- Makefile
- bin
# Turn off built-in syntax highlighting.
highlighter: false
title: Automated Version Control
teaching: 5
exercises: 0
- "What is version control and why should I use it?"
- "Understand the benefits of an automated version control system."
- "Understand the basics of how Git works."