From af3c5d18e966951f74708b89fa3600ad7eceb297 Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:10:38 -0700 Subject: [PATCH 01/10] Hide Markdown layout-mandated HRs --- _stylesheets/curriculum.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_stylesheets/curriculum.scss b/_stylesheets/curriculum.scss index 8860591be..13463c70a 100644 --- a/_stylesheets/curriculum.scss +++ b/_stylesheets/curriculum.scss @@ -246,6 +246,9 @@ table{ opacity: .5; } + &>hr{ + display: none; + } .slide{ width: 100%; From 62afd73e39bba8cced40cddd1211d1e490b81bbb Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:11:39 -0700 Subject: [PATCH 02/10] Deprecate need for Markdown include for slide Replace any Markdown and `{% include %}` with jQuery `wrapAll` and use of HRs and delineation. --- _javascript/curriculum.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/_javascript/curriculum.js b/_javascript/curriculum.js index f506ad70f..75158aedc 100644 --- a/_javascript/curriculum.js +++ b/_javascript/curriculum.js @@ -131,9 +131,21 @@ $(function(){ }); function updateSlideSize(){ - var w = window.innerWidth; - var h = window.innerHeight; - $(".slide").css("height", h); + var h = window.innerHeight, + odd = $("hr:odd") + even = $("hr:even"); + + odd.each(function(index){ + // $(this).append("close"); + + }); + + even.each(function(index){ + $(this).nextUntil("hr").wrapAll("
"); + }); + + $(".slide").css("height", h + "px"); + } //Time toggle keybinding From b29b3ebdfceebeeb3139a8ad3024c2a256b1ac9c Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:11:57 -0700 Subject: [PATCH 03/10] Add example (temporary) of new Markdown slides --- foundations/index-simple.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 foundations/index-simple.md diff --git a/foundations/index-simple.md b/foundations/index-simple.md new file mode 100644 index 000000000..28d1230bf --- /dev/null +++ b/foundations/index-simple.md @@ -0,0 +1,34 @@ +--- +layout: curriculum +title: GitHub Foundations +byline: Discovering the GitHub collaboration platform +redirect_from: + - ../workbooks/github-foundations.html +--- + +--- +## Understanding version controls + +--- + +--- +![Gitl logo](../assets/diagrams/git-logo-black.svg) + +--- + +--- +![Distributed version control](../assets/diagrams/distributed-version-control.svg) + +--- + +--- +![What is a commit](../assets/diagrams/what-is-a-commit.svg) + +--- + + +### Lab + +1. Launch Terminal or Git Shell +2. Check Git installation with `git --version` +3. Launch GitHub for Desktop From e7b9100b36b1e200f4ee76f4be114730959d992a Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:20:22 -0700 Subject: [PATCH 04/10] Ported all Foundations content to example --- foundations/index-simple.md | 469 +++++++++++++++++++++++++++++++++++- 1 file changed, 464 insertions(+), 5 deletions(-) diff --git a/foundations/index-simple.md b/foundations/index-simple.md index 28d1230bf..8a7ef5eed 100644 --- a/foundations/index-simple.md +++ b/foundations/index-simple.md @@ -3,32 +3,491 @@ layout: curriculum title: GitHub Foundations byline: Discovering the GitHub collaboration platform redirect_from: - - ../workbooks/github-foundations.html +- ../workbooks/github-foundations.html --- --- -## Understanding version controls + +## Understanding version control --- --- + ![Gitl logo](../assets/diagrams/git-logo-black.svg) --- --- + ![Distributed version control](../assets/diagrams/distributed-version-control.svg) --- --- + ![What is a commit](../assets/diagrams/what-is-a-commit.svg) --- - -### Lab - +{% capture lab %} 1. Launch Terminal or Git Shell 2. Check Git installation with `git --version` 3. Launch GitHub for Desktop +{% endcapture %}{% include lab %} + +### Objectives +* Understand the "distributed" aspect of Git version control +* Comprehend how *commit* objects serve as document change reference points +* Check that Git is installed and functioning on your system + +### Git key vocabulary & concepts +Three important words key to learning Git are: + +* Repository +* Commit +* Branch + +*Git is an open source distributed* version control system invented by Linus Torvalds in 2005. It is used to version the Linux kernel and is shown to be, by some research, the most popular modern version control system. + +Three important concepts of this version control system are: + +* Distributed version control is the concept of full copies of the repository on every contributing machine +* Git is the file and information tracker +* GitHub is the collaboration platform + +#### Deeper study +* [A short history of Git](http://git-scm.com/book/en/Getting-Started-A-Short-History-of-Git) +* [The Git project homepage](http://git-scm.com) +* [Entry-level videos from the official Git site](http://git-scm.com/videos) + +#### Installers +The command line version of Git has a very light footprint. For most platforms, you can simply copy the binaries to a folder that is on the executable search $PATH. Git is primarily written in C, which means there is a unique installer for each operating system. + +* **Windows**: [GitHub for Windows installer](http://windows.github.com) +* **Mac**: [GitHub for Mac installer](http://mac.github.com) +* **Linux**: Git's source code and a listing of supported package managers can be found [on the git-scm.com site](http://git-scm.com/download/linux). +* **Any platform**: [Pro Git Book: Installing Git](http://git-scm.com/book/en/Getting-Started-Installing-Git) + +### Videos + +#### What is Git? + + + + +--- + +## Surveying the GitHub platform + +--- + +--- + +![GitHub logo](../assets/diagrams/github-logo-black.svg) + +--- + +--- + + +#### Repositories + +--- + +--- + + +#### Branches + +--- + +--- + + +#### Pull Requests + +--- + +--- + + +#### Issues + +--- + +--- + + +#### Teams + +--- + +--- + + +#### Organizations + +--- + +{% capture lab %} +* Describe the difference between the Git DVCS and GitHub collaboration platform +* Access the common project components of daily GitHub interactions +* Utilize project management components (Issues, Milestones, Collaborators, Teams) +* Recognize best document types for version control (code, CSV/TSV, small binaries) +{% endcapture %}{% include lab %} + +### Core concepts +The six core concepts in the GitHub ecosystem are: + +* **Repository**: a location to store related code and files +* **Branch**: a named variation on the code or enhancement-in-progress +* **Pull Request**: discussion associated with a branch +* **Issues**: an integrated bug and enhancement tracker +* **Organizations**: groups of repositories and team members +* **Teams**: named sets of users that grant access levels and group by talent, focus, and reporting + +### Feature overview +* Hosting repositories +* Collaborating on code, documents, text +* Controlling access & contributions +* Permissions +* Forks +* Users +* Organizations +* Tracking assignments, tickets, bugs +* Hosting supporting documentation (GH-Pages) +* https://pages.github.com/ +* Discovering trending technology (Explore) +* https://github.com/explore +* Tracking favorite projects (Stars) +* https://github.com/stars +* Notifications +* Watching repositories +* Subscribing (per thread) +* Unsubscribing (per thread) +* Starring repositories +* Gist +* Repos in themselves +* Embeddable (use with GH-pages content) +* GitHub Flavored Markdown +* Basics +* Emoji +* Checklists (Issues, Gists) +* Cross referencing +* Commit referencing +* Issue references +* cross-repo refs org|user/repo#num +* `README.md` in any folder level +* `CONTRIBUTING.md` in root + +### Details & resources +GitHub accounts are free. Sign up for one at [github.com/join](https://github.com/join). + +GitHub is the repository hosting, collaboration, deployment, and distribution platform for both open source and private software projects. It facilitates discussing changes-in-progress through the concepts of Issues and Pull Requests and provides a web user interface to much of Git. The web flow made possible by GitHub brings a much wider range of contributors, including documentation specialists, designers, and ops engineers into the flow of contributing to your application's life cycle. + +GitHub accounts are free for an unlimited quantity of public repositories. Only private repositories cost to host on the service. Private repositories are typically used for closed-source consulting client or corporate products, whereas public repositories are typically used for open source. + +Sign up for a free GitHub account at [github.com/join](https://github.com/join). + +* [GitHub.com feature list](https://github.com/features) +* [How to sign up for GitHub](https://www.youtube.com/watch?v=ezxRcdJ8glM&list=PLg7s6cbtAD17rhrz2BJWAPJMjR71B3IDx) + +### Videos + +#### GitHub account creation video + + + + +--- + +## Creating a hosted repository + +--- + +{% capture lab %} +* Visit GitHub.com +* Click the `+` +* Name the repository +* Choose seed files +* Discuss ways of interaction +{% endcapture %}{% include lab %} + +### Details +Repositories can be created in numerous ways, including: + +* With the GitHub web user interface +* With a GitHub GUI +* With `git init` at the command line + +And important decision when creating your repository is in its name. Giving it a human readable, quick-to-identify, and sensible name makes it most effective and efficient for both yourself, and your colleagues to understand. + + + +--- + +## Touring content versioning on GitHub + +--- + +{% capture lab %} +1. Browse to one of your repositories +2. Create file(s) and commit the new content +3. Edit an existing file's content and commit the change +4. Remove a file and commit the removal +5. Change a filename and commit the path change +6. Examine the *Commits* page of change history +{% endcapture %}{% include lab %} + +### Details +The GitHub web interface allows you to interact and perform many file-affecting actions directly through your browser: + +* Browse projects +* Start branches +* Create files +* Edit content +* Change paths +* Open Pull Requests + + + +--- + +## Acquiring repositories locally + +--- + +--- +![Repository clone process](../assets/diagrams/repo-clone.svg) +--- + +{% capture lab %} +* Clone from web (Clone in Desktop button) +* Clone via personal repo list in GitHub Desktop +* Clone via SSH or HTTPS URL +{% endcapture %}{% include lab %} + + +### Details +A commit is a transactionally grouped set of changes, described by a brief message explaining the "why" of the attached changes. + +``` +git status +git add [file] +git commit -m"[description]" +``` + +Git enables repositories to be created both on GitHub, or locally on a developer's computer. A repository created locally can be synced to a network destination at a later time, preserving all the timestamps and comments in the local commits during the synchronization. + +Since Git facilitates making and saving changes without a network connection, syncing changes with an upstream server is a frequent operation once connected back to a network. Git accomplishes the syncing through the `pull` and `push` commands. + +A repository must have fully incorporated all upstream changes before it can successfully push changes out. This pattern encourages breakages to happen at the leaf nodes of the repository network, thus reducing stop-work merge activity and aiding those tasks being performed asynchronously and potentially even offline. + +To retrieve all upstream changes, and then transmit all local changes, type: + +```shell +$ git pull +$ git push origin [master|branch] +``` + +Local repositories offer several benefits: + +- Initialize repositories while disconnected from network +- Craft file versions at your own pace or needing to publish changes one at a time +- Create branches to isolate experiments in moments and exclusive to your development system + +Just as with the Git technology operating on GitHub, local repositories also use two identical aspects: Commits, which serve as history marker for file(s) and change(s) with a record of author, time, and message; and Branches, which serve as a container for grouped commits, making simpler means to integrate change with cleaner code review possibilities. + + + +--- + +## Exploring the GitHub Flow + +--- + +--- + +### What is a branch + +![What is a branch](../assets/diagrams/what-is-a-branch.svg) +--- + +{% capture lab %} +1. Using the GitHub web UI, create a branch with an articulate feature name +2. Make two distinct commits to the branch, each contributing part of the feature's changes +3. Return to the homepage of the repository by clicking the repository's name +4. Notice the suggestion message asking if you'd like to "compare and pull request" +5. Click on *Compare and Pull Request* +6. Describe the reasoning behind the changes on this branch via the pull request +7. @mention a team or colleague, asking for a code review +8. Address the points raised by the reviewers through an additional commit to the branch +9. Ask for a final review and :+1: from a colleague +10. Merge the pull request +{% endcapture %}{% include lab %} + +### Details +The GitHub Flow is a path through the GitHub user interface that facilitates governed, named, and reviewed sets of changes. This flow can be performed entirely from a web browser, with no need to download the code to a desktop machine, and yet still have the benefit of syntax highlighting and pre-merge code reviews and discussions. + +A branch is a divergent path in the history of the code base. It may contain an experiment, fix, or enhancement, and is generally intended to be merged back to the `master` branch after being thoroughly reviewed by a colleague. + +### Videos + + + + +--- + +### Contributing with Forks & Pull Requests + +--- + +--- + +![Fork contribution pattern](../assets/diagrams/fork-structure.svg) + +--- + +{% capture lab %} +1. Create a Fork of a repository needing contributions +2. Follow the contribution pattern of the [GitHub Flow](https://guides.github.com/introduction/flow/), with the branch creation and commits happening on your fork of the repository +3. Observe the Network and Members graph that offer visualizations of your commits and fork +4. Merge the pull request +5. Observe your contributions in the original repository, having preserved your username as the author of the code +{% endcapture %}{% include lab %} + +#### Resources +* [Guide to Forking](https://guides.github.com/overviews/forking/) + + + +--- + +## Syncing local and GitHub repos + +--- + +--- + +![Distributed repository interactions](../assets/diagrams/network.svg) + +--- + +{% capture lab %} +1. Clone an existing GitHub repo using the GitHub for Desktop application +2. Following the GitHub Flow pattern, create a topic branch and make commits to the local repository +3. Review the local (unsynced) commits in history +4. Publish the changes via the Sync button +5. Verify the presence of the now-synced changes by refreshing the GitHub web UI of the cloned repo +{% endcapture %}{% include lab %} + +### Details +In many cases, working with a code project means retrieving it to the local disk so that you can leverage your language-specific IDE when making changes. To retrieve a repository to the local disk is to `clone` it, in Git parlance. + +Optionally, the process of synchronizing can be done on the command line, in addition to graphical clients like [GitHub for Windows](https://windows.github.com) and [GitHub for Mac](https://mac.github.com): + +``` +# Retrieve GitHub changes +git pull origin [master|branch] + +# Publish local changes +git push origin [master|branch] +``` + + + +--- + +## Visualizing changes with GitHub + +--- + +### Details +GitHub enhances a traditional Git experience with visualizations typically thought of as the realm of desktop applications. Some of the visualizations we can look at today include: + +* Comparing/Diff-ing +* Code +* Prose +* Images +* Maps +* Spreadsheets +* 3D models +* Branch view +* Branch ahead/behind positions +* Network graph +* Activity graph + +#### Image Diff +Image diffing is typically thought of as a desktop-oriented feature. However, GitHub aims to be a web application that performs beyond desktop apps, and provides a rich 2-up, swipe, and onion skin view for changed images. + +* [Image diff blog post](https://github.com/blog/817-behold-image-view-modes) +* [Image diff demo from Cameron McEfee](https://github.com/cameronmcefee/Image-Diff-View-Modes/commit/8e95f70c9c47168305970e91021072673d7cdad8) +* [Image diff demo from GitHub School](https://github.com/githubschool/hellogitworld/commit/7c0ffa9d88616972bb84befbec40a2212478149e) + +Similarly, 3D file viewing, and then 3D file diffing are also part of the GitHub platform, providing a surprisingly rich experience right in the browser. + +* [3D file viewing blog post](https://github.com/blog/1465-stl-file-viewing) +* [3D view demo of a RepRap part](https://github.com/reprap/huxley/blob/master/alternative-parts/x-blunt-plate-extended.stl) +* [3D file diffing blog post](https://github.com/blog/1633-3d-file-diffs) + + + +--- + +## Using GitHub Pages + +--- + + + +--- + +## Managing projects + +--- + + + +--- + +## Using GitHub Flavored Markdown + +--- + +### Details +A plaintext format for writing prose and documentation. In addition to the [basic formatting options](https://help.github.com/articles/markdown-basics), Markdown files hosted and viewed on GitHub can make use of the following enhancements: + +* [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown) +* [Emoji](http://www.emoji-cheat-sheet.com/) +* [Checklists](https://github.com/blog/1825-task-lists-in-all-markdown-documents) (Issues, Gists) + +--- + +### Interacting with shortcuts + +--- + +GitHub, though it is a web application, aims to behave as much like a desktop app as possible. Many of its features are accessible via keyboard shortcuts. While on any GitHub page, press `?` and a context-sensitive help menu will appear. Some of the most frequently used keyboard shortcuts include: + +* `?` help +* `/` command bar +* `t` fuzzy file search +* `s` set focus to the search box +* `g` `c` go to code +* `g` `i` go to issues + + +--- + +## Additional resources + +--- + +### Details +This course covers many introductory and day-to-day uses of Git and GitHub. There are many more resources available to continue your exploration with the technology and platform, and we've included these here for you to explore. + +* [Try Git by CodeSchool](https://try.github.io/) +* [O'Reilly's Mastering Git video series](http://bit.ly/ogitvid) +* [Introducing GitHub](http://shop.oreilly.com/product/0636920033059.do) +* [Git and GitHub LiveLessons (Workshop)](http://www.informit.com/store/git-and-github-livelessons-workshop-9780133991772) From fac27449a50fa4b2ec9d01493fa1bcce96a2e32f Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:26:06 -0700 Subject: [PATCH 05/10] Simplify JS for slide-building --- _javascript/curriculum.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/_javascript/curriculum.js b/_javascript/curriculum.js index 75158aedc..07338983c 100644 --- a/_javascript/curriculum.js +++ b/_javascript/curriculum.js @@ -132,20 +132,13 @@ $(function(){ function updateSlideSize(){ var h = window.innerHeight, - odd = $("hr:odd") even = $("hr:even"); - odd.each(function(index){ - // $(this).append("close"); - - }); - even.each(function(index){ $(this).nextUntil("hr").wrapAll("
"); }); $(".slide").css("height", h + "px"); - } //Time toggle keybinding From 1d74ea0113ac2b985ecf97d7ea91655168a31bbe Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 11:57:42 -0700 Subject: [PATCH 06/10] Correct Markdown resulting in diagram as H2 --- foundations/index-simple.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/foundations/index-simple.md b/foundations/index-simple.md index 8a7ef5eed..b72854c59 100644 --- a/foundations/index-simple.md +++ b/foundations/index-simple.md @@ -259,7 +259,9 @@ The GitHub web interface allows you to interact and perform many file-affecting --- --- + ![Repository clone process](../assets/diagrams/repo-clone.svg) + --- {% capture lab %} @@ -312,6 +314,7 @@ Just as with the Git technology operating on GitHub, local repositories also use ### What is a branch ![What is a branch](../assets/diagrams/what-is-a-branch.svg) + --- {% capture lab %} From 933ce3a7b8a3b7aace864088d50bd184a982e290 Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 12:04:37 -0700 Subject: [PATCH 07/10] Convert all decks to new slide via Markdown only --- advanced/index.md | 114 +++++++++++------ foundations/index.md | 208 +++++++++++++++++++----------- intermediate/index.md | 292 ++++++++++++++++++++++++++++-------------- 3 files changed, 406 insertions(+), 208 deletions(-) diff --git a/advanced/index.md b/advanced/index.md index a02ce4af1..1f9308a43 100644 --- a/advanced/index.md +++ b/advanced/index.md @@ -6,17 +6,23 @@ redirect_from: - ../workbooks/github-advanced.html --- -{% capture slide %} +--- + ## Understanding Git, navigating history -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Git data structure](../assets/diagrams/commit-data-structure.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Commit DAG](../assets/diagrams/commit-dag.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Understand the way Git preserves history and data objects @@ -82,9 +88,11 @@ $ git log --oneline --left-right master...other -{% capture slide %} +--- + ## Collaborating on change & releases -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Utilize the command line for branching strategies @@ -158,9 +166,11 @@ $ git push origin :[tag-name-to-delete] -{% capture slide %} +--- + ## Ignoring & cleaning up files -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Setup ignore patterns to prevent accidental versioning @@ -209,9 +219,11 @@ $ git clean -fx ### Video -{% capture slide %} +--- + ## Mastering shortcuts & efficiencies -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Use built-in, time-saving command shortcuts for committing and branch switching @@ -283,9 +295,11 @@ $ git config rerere.enable true -{% capture slide %} +--- + ## Capturing pieces of history -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Capture select commits and generate new history on separate branches @@ -313,30 +327,42 @@ git checkout [commit] -- [path] -{% capture slide %} +--- + ## Rewriting and crafting history -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Rebase](../assets/diagrams/rebase-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Rebase](../assets/diagrams/rebase-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Rebase](../assets/diagrams/rebase-03.svg) -{% endcapture %}{% include slide-section %} +--- + + +--- -{% capture slide %} ![Rebase](../assets/diagrams/rebase-interactive-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Rebase](../assets/diagrams/rebase-interactive-02.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} @@ -396,9 +422,11 @@ $ git rebase -i --autosquash [ref] -{% capture slide %} +--- + ## Reviewing & synchronizing -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Review GitHub pull requests from the command line @@ -479,9 +507,11 @@ $ git config --add remote.[upstream].fetch "+refs/pull/*/head:refs/remotes/[upst -{% capture slide %} +--- + ## Filtering histories & externalizing dependencies -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Separate versioned content in a repository into a separate one @@ -524,9 +554,11 @@ $ git submodule update --init --recursive -{% capture slide %} +--- + ## Signing work -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Use a GPG key to sign a specific commit @@ -571,9 +603,11 @@ $ git tag -v [tag-name] -{% capture slide %} +--- + ## Using GitHub CLI and the API -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Create a GitHub (public or private) repository from the command line @@ -625,9 +659,11 @@ $ curl -n There are a number of libraries for interfacing with the GitHub API, all of which are available at [octokit.github.io](http://octokit.github.io/) -{% capture slide %} +--- + ## Diff & merge tool -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Setup a preferred visual tool for diff and merge operations @@ -690,9 +726,11 @@ A sample `.gitconfig` file: -{% capture slide %} +--- + ## Additional resources -{% endcapture %}{% include slide-section %} + +--- ### Details This course covers many advanced uses of Git and GitHub, and yet there is still more to explore. We've included some of the most useful resources for our students with insatiable appetites. diff --git a/foundations/index.md b/foundations/index.md index ea66c08f5..b72854c59 100644 --- a/foundations/index.md +++ b/foundations/index.md @@ -3,20 +3,32 @@ layout: curriculum title: GitHub Foundations byline: Discovering the GitHub collaboration platform redirect_from: - - ../workbooks/github-foundations.html +- ../workbooks/github-foundations.html +--- + --- -{% capture slide %} ## Understanding version control -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Gitl logo](../assets/diagrams/git-logo-black.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %}![Distributed version control](../assets/diagrams/distributed-version-control.svg){% endcapture %}{% include slide-section %} +--- -{% capture slide %}![What is a commit](../assets/diagrams/what-is-a-commit.svg){% endcapture %}{% include slide-section %} +--- + +![Distributed version control](../assets/diagrams/distributed-version-control.svg) + +--- + +--- + +![What is a commit](../assets/diagrams/what-is-a-commit.svg) + +--- {% capture lab %} 1. Launch Terminal or Git Shell @@ -64,43 +76,59 @@ The command line version of Git has a very light footprint. For most platforms, -{% capture slide %} +--- + ## Surveying the GitHub platform -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![GitHub logo](../assets/diagrams/github-logo-black.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Repositories -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Branches -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Pull Requests -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Issues -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Teams -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + #### Organizations -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} * Describe the difference between the Git DVCS and GitHub collaboration platform @@ -123,29 +151,29 @@ The six core concepts in the GitHub ecosystem are: * Hosting repositories * Collaborating on code, documents, text * Controlling access & contributions - * Permissions - * Forks - * Users - * Organizations +* Permissions +* Forks +* Users +* Organizations * Tracking assignments, tickets, bugs * Hosting supporting documentation (GH-Pages) - * https://pages.github.com/ +* https://pages.github.com/ * Discovering trending technology (Explore) - * https://github.com/explore +* https://github.com/explore * Tracking favorite projects (Stars) - * https://github.com/stars +* https://github.com/stars * Notifications * Watching repositories * Subscribing (per thread) * Unsubscribing (per thread) * Starring repositories * Gist - * Repos in themselves - * Embeddable (use with GH-pages content) +* Repos in themselves +* Embeddable (use with GH-pages content) * GitHub Flavored Markdown - * Basics - * Emoji - * Checklists (Issues, Gists) +* Basics +* Emoji +* Checklists (Issues, Gists) * Cross referencing * Commit referencing * Issue references @@ -172,9 +200,11 @@ Sign up for a free GitHub account at [github.com/join](https://github.com/join). -{% capture slide %} +--- + ## Creating a hosted repository -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} * Visit GitHub.com @@ -195,9 +225,11 @@ And important decision when creating your repository is in its name. Giving it a -{% capture slide %} +--- + ## Touring content versioning on GitHub -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Browse to one of your repositories @@ -220,11 +252,17 @@ The GitHub web interface allows you to interact and perform many file-affecting -{% capture slide %} +--- + ## Acquiring repositories locally -{% endcapture %}{% include slide-section %} -{% capture slide %}![Repository clone process](../assets/diagrams/repo-clone.svg){% endcapture %}{% include slide-section %} +--- + +--- + +![Repository clone process](../assets/diagrams/repo-clone.svg) + +--- {% capture lab %} * Clone from web (Clone in Desktop button) @@ -265,11 +303,19 @@ Just as with the Git technology operating on GitHub, local repositories also use -{% capture slide %} +--- + ## Exploring the GitHub Flow -{% endcapture %}{% include slide-section %} -{% capture slide %}![What is a branch](../assets/diagrams/what-is-a-branch.svg){% endcapture %}{% include slide-section %} +--- + +--- + +### What is a branch + +![What is a branch](../assets/diagrams/what-is-a-branch.svg) + +--- {% capture lab %} 1. Using the GitHub web UI, create a branch with an articulate feature name @@ -294,13 +340,17 @@ A branch is a divergent path in the history of the code base. It may contain an -{% capture slide %} +--- + ### Contributing with Forks & Pull Requests -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Fork contribution pattern](../assets/diagrams/fork-structure.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Create a Fork of a repository needing contributions @@ -315,13 +365,17 @@ A branch is a divergent path in the history of the code base. It may contain an -{% capture slide %} +--- + ## Syncing local and GitHub repos -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Distributed repository interactions](../assets/diagrams/network.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Clone an existing GitHub repo using the GitHub for Desktop application @@ -346,20 +400,22 @@ git push origin [master|branch] -{% capture slide %} +--- + ## Visualizing changes with GitHub -{% endcapture %}{% include slide-section %} + +--- ### Details GitHub enhances a traditional Git experience with visualizations typically thought of as the realm of desktop applications. Some of the visualizations we can look at today include: * Comparing/Diff-ing - * Code - * Prose - * Images - * Maps - * Spreadsheets - * 3D models +* Code +* Prose +* Images +* Maps +* Spreadsheets +* 3D models * Branch view * Branch ahead/behind positions * Network graph @@ -380,21 +436,27 @@ Similarly, 3D file viewing, and then 3D file diffing are also part of the GitHub -{% capture slide %} +--- + ## Using GitHub Pages -{% endcapture %}{% include slide-section %} +--- -{% capture slide %} + +--- + ## Managing projects -{% endcapture %}{% include slide-section %} + +--- -{% capture slide %} +--- + ## Using GitHub Flavored Markdown -{% endcapture %}{% include slide-section %} + +--- ### Details A plaintext format for writing prose and documentation. In addition to the [basic formatting options](https://help.github.com/articles/markdown-basics), Markdown files hosted and viewed on GitHub can make use of the following enhancements: @@ -403,11 +465,12 @@ A plaintext format for writing prose and documentation. In addition to the [basi * [Emoji](http://www.emoji-cheat-sheet.com/) * [Checklists](https://github.com/blog/1825-task-lists-in-all-markdown-documents) (Issues, Gists) +--- - -{% capture slide %} ### Interacting with shortcuts -{% endcapture %}{% include slide-section %} + +--- + GitHub, though it is a web application, aims to behave as much like a desktop app as possible. Many of its features are accessible via keyboard shortcuts. While on any GitHub page, press `?` and a context-sensitive help menu will appear. Some of the most frequently used keyboard shortcuts include: * `?` help @@ -418,10 +481,11 @@ GitHub, though it is a web application, aims to behave as much like a desktop ap * `g` `i` go to issues +--- -{% capture slide %} ## Additional resources -{% endcapture %}{% include slide-section %} + +--- ### Details This course covers many introductory and day-to-day uses of Git and GitHub. There are many more resources available to continue your exploration with the technology and platform, and we've included these here for you to explore. diff --git a/intermediate/index.md b/intermediate/index.md index 434ebab02..6c6fb5367 100644 --- a/intermediate/index.md +++ b/intermediate/index.md @@ -5,29 +5,38 @@ byline: Leveraging Git and GitHub from the command line redirect_from: - ../workbooks/github-intermediate.html --- -{% capture slide %} + +--- + ## Configuring your Git environment -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ``` git config user.name "Your Name" git config user.email "Email Address" ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```bash git config color.ui auto git config core.autocrlf [input|true] ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```bash git config core.editor ``` -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Verify the current value of your username and email address as known by Git. @@ -108,23 +117,25 @@ $ git config --list --[scope] -{% capture slide %} +--- + ## Starting on the command line -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- ``` # Initialize a new project $ git init [projectname] ``` -{% endcapture %}{% include slide-section %} +--- -{% capture slide %} +--- ``` #Initialize from inside a top level directory @@ -132,24 +143,29 @@ $ git init [projectname] $ cd [project-directory] $ git init ``` -{% endcapture %}{% include slide-section %} +--- + + +--- -{% capture slide %} ```shell #Acquire with default repository name $ git clone [repository-url] ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ``` # Acquire with preferred, optional name $ git clone [url] [optional-folder-name] ``` -{% endcapture %}{% include slide-section %} + +--- ### Details @@ -162,41 +178,57 @@ Git provides an easy way to start versioning any prototype, prose or project wit -{% capture slide %} +--- + ## Versioning via the command line -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git status $ git add [filename] $ git commit -m "[your description]" ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Versions](../assets/diagrams/commit-versions-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Versions](../assets/diagrams/commit-versions-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Versions](../assets/diagrams/commit-versions-03.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Three stages of versioning](../assets/diagrams/commit-three-stage-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Three stages of versioning](../assets/diagrams/commit-three-stage-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Three stages of versioning](../assets/diagrams/commit-three-stage-03.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} @@ -213,47 +245,63 @@ $ git commit -m "[your description]" -{% capture slide %} +--- + ## Comparing pending and existing changes -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Diff](../assets/diagrams/diff-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git diff ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Diff](../assets/diagrams/diff-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git diff --staged ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Diff](../assets/diagrams/diff-03.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git diff HEAD ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell # By specific file $ git diff [file-path] ``` -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} @@ -296,21 +344,27 @@ $ git diff [file-path] -{% capture slide %} +--- + ## Reviewing historical changes -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git log ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell $ git log --oneline ``` -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Review default commit history output @@ -344,54 +398,72 @@ $ git log --patch --color-words -{% capture slide %} +--- + ## Organizing history ## for optimal workflows -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell # Create a new branch from the current one $ git branch [branch-name] ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell # Switch to a specified branch $ git checkout [branch-name] ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ```shell # List all local branches $ git branch ``` -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ### Merge strategies -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![diagram](../assets/diagrams/merge-fast-forward-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![diagram](../assets/diagrams/merge-fast-forward-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![diagram](../assets/diagrams/merge-recursive-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![diagram](../assets/diagrams/merge-recursive-02.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Create a topic branch from `master` or `gh-pages` @@ -440,17 +512,23 @@ $ git merge [branch] -{% capture slide %} +--- + ## Interacting with distributed repositories -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![Distributed repos](../assets/diagrams/distributed-version-control.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![diagram](../assets/diagrams/fork-structure.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Understand Fork repository model @@ -540,9 +618,11 @@ $ git push -{% capture slide %} +--- + ## Crafting shortcuts & efficiencies -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Setup example aliases for command line efficiency @@ -567,29 +647,41 @@ $ git config alias.s "status -s" -{% capture slide %} +--- + ## Understanding versioned file lifecycle -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![States of tracking](../assets/diagrams/states-of-tracking-01.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![States of tracking](../assets/diagrams/states-of-tracking-02.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![States of tracking](../assets/diagrams/states-of-tracking-03.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![States of tracking](../assets/diagrams/states-of-tracking-04.svg) -{% endcapture %}{% include slide-section %} -{% capture slide %} +--- + +--- + ![States of tracking](../assets/diagrams/states-of-tracking-05.svg) -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Understand the tracking states of new, modified, deleted, and renamed paths @@ -649,9 +741,11 @@ $ git log --stat -M -{% capture slide %} +--- + ## Undoing any versioned changes -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Use `revert` to generate a new commit undoing history @@ -688,9 +782,11 @@ $ git reset --hard [commit|branch|tag] -{% capture slide %} +--- + ## Recovering from anything -{% endcapture %}{% include slide-section %} + +--- {% capture lab %} 1. Understand the side effects of `reset` and discarding commit history From a6ab52ae299156a325102b4b968d75aec3f5d4bb Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 12:05:20 -0700 Subject: [PATCH 08/10] Remove deprecated slide deck includes --- _includes/slide-section | 6 ------ _includes/svg | 9 --------- 2 files changed, 15 deletions(-) delete mode 100644 _includes/slide-section delete mode 100644 _includes/svg diff --git a/_includes/slide-section b/_includes/slide-section deleted file mode 100644 index 3ec145195..000000000 --- a/_includes/slide-section +++ /dev/null @@ -1,6 +0,0 @@ - -
-
-{{slide | markdownify}} -
-
diff --git a/_includes/svg b/_includes/svg deleted file mode 100644 index fe9e6d750..000000000 --- a/_includes/svg +++ /dev/null @@ -1,9 +0,0 @@ -{% if svg_path %} -
- -
-{% endif %} From d682cfa9b6c988719b1ac85d9908c1a129174865 Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 12:13:20 -0700 Subject: [PATCH 09/10] Update README to match current document state --- README.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index aaad2eb08..fa1c0b2cf 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,27 @@ We know that many of the users of this repository are just focused on getting th ## Contribute -We’re eager to have your help in improving this kit. If you have an idea for a change, start by opening a new [Issue](https://github.com/github/training-kit/issues) so we can discuss and help guide your contribution to the right location. If you have corrections or kit contributions, we'd be glad to receive them via a [Pull Request](https://help.github.com/articles/using-pull-requests). For kit contributions, we ask you to share in our mindset of minimalism. We aim to keep the workbook and slides a synchronized pair. +We’re eager to have your help in improving this kit. If you have an idea for a change, start by opening a new [Issue](https://github.com/github/training-kit/issues) so we can discuss and help guide your contribution to the right location. If you have corrections or kit contributions, we'd be glad to receive them via a [Pull Request](https://help.github.com/articles/using-pull-requests). For kit contributions, we ask you to share in our mindset of minimalism. -The educational content exists in two top level directories: +The slides align with the [Foundations](), [Intermediate](), and [Advanced]() classes delivered by the GitHub Training team. -1. [`slides`](https://github.com/github/training-kit/tree/master/slides) -2. [`workbooks`](https://github.com/github/training-kit/tree/master/workbooks) +The three class' slides reside at top-level directories: + +- [`foundations/`](https://github.com/github/training-kit/tree/master/foundations) +- [`intermediate/`](https://github.com/github/training-kit/tree/master/intermediate) +- [`advanced/`](https://github.com/github/training-kit/tree/master/advanced) ## File Format -The majority of the site materials are written in [Markdown](http://whatismarkdown.com), a [lightweight markup language](http://en.wikipedia.org/wiki/Lightweight_markup_language) supported in the GitHub web application user interface. There is a syntax guide to the original [Markdown format](http://daringfireball.net/projects/markdown/syntax) and also [GitHub Flavored Markdown](http://github.github.com/github-flavored-markdown/). This repository is based on [Hydeslides](https://github.com/jordanmccullough/HydeSlides). That project offers additional information on the file and directory structure. +The class materials are written in [Markdown](http://whatismarkdown.com), a [lightweight markup language](http://en.wikipedia.org/wiki/Lightweight_markup_language) supported in the GitHub web application user interface. There is a syntax guide to the original [Markdown format](http://daringfireball.net/projects/markdown/syntax) and also [GitHub Flavored Markdown](http://github.github.com/github-flavored-markdown/). + +The class material content possess two specialized uses of Markdown for slide-like rendering and formatting: + +- Full-screen slides are preceded with a `---` and followed by `---` +- Step-by-step *lab* sections are wrapped with `{% capture lab %}` and `{% endcapture %}{% include lab %}` + + This repository is based on [Hydeslides](https://github.com/jordanmccullough/HydeSlides). That project offers additional information on the file and directory structure. ## Build From 7a6f83f53713e5013e61cf58dbf51b3b979daec6 Mon Sep 17 00:00:00 2001 From: jordanmccullough Date: Mon, 29 Dec 2014 12:45:37 -0700 Subject: [PATCH 10/10] Remove deprecated include uses --- intermediate/index-extras.md | 84 ++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 37 deletions(-) diff --git a/intermediate/index-extras.md b/intermediate/index-extras.md index dc21fb6d3..1b9ac5d2a 100644 --- a/intermediate/index-extras.md +++ b/intermediate/index-extras.md @@ -8,10 +8,11 @@ This curriculum will be your companion to the GitHub Intermediate class taught b ![Git repository creation at the command line](../assets/screenshots/terminal-repo-creation.jpg) -{% capture slide %} +--- + ### Git Configuration -{% endcapture %} -{% include slide-section %} + +--- ![GitHub for Mac Advanced Preferences](../assets/screenshots/github-for-mac-advanced-preferences.png) @@ -45,17 +46,19 @@ $ git config --list -{% capture slide %} +--- + ### Start a repository -{% endcapture %} -{% include slide-section %} + +--- + +--- -{% capture slide %} ### Versioning content -{% endcapture %} -{% include slide-section %} + +--- #### Three stage thinking ![diagram](../assets/diagrams/commit-three-stage.svg) @@ -69,10 +72,11 @@ $ git config --list #### Video -{% capture slide %} +--- + ### Review pending modifications -{% endcapture %} -{% include slide-section %} + +--- Git advocates precision in each commit's contents and commit message. This is facilitated by easy reviewing of in-flight changes prior to describing them and making them permanent. @@ -107,10 +111,11 @@ $ git diff [file-path] #### Video -{% capture slide %} +--- + ### Review historical changes -{% endcapture %} -{% include slide-section %} + +--- Git can look back at the history of each commit to see when a change took place, who made the change, or what the change contained. @@ -135,11 +140,11 @@ $ git log --patch --color-words #### Video -{% capture slide %} +--- + ### Local workflows -{% endcapture %} -{% include slide-section %} +--- Organizing history: @@ -148,10 +153,11 @@ Organizing history: -{% capture slide %} +--- + ### Distributed repositories -{% endcapture %} -{% include slide-section %} + +--- Acquiring a repo: @@ -161,44 +167,48 @@ $ git clone [repository-url] -{% capture slide %} +--- + ### Remote workflows -{% endcapture %} -{% include slide-section %} + +--- ![diagram](../assets/diagrams/fork-structure.svg) -{% capture slide %} +--- + ### Shortcuts and custom commands -{% endcapture %} -{% include slide-section %} + +--- +--- -{% capture slide %} ### File lifecycle -{% endcapture %} -{% include slide-section %} + +--- + ![diagram](../assets/diagrams/states-of-tracking.svg) -{% capture slide %} +--- + ### Undoing changes -{% endcapture %} -{% include slide-section %} + +--- -{% capture slide %} -### Recovering anything -{% endcapture %} -{% include slide-section %} +--- + +### Recovering anything +---