class: center, inverse, middle, title-slide
.ties-footer[
]
class: middle, center
If you'd like to download any of the materials for this presentation, check out
>> the workshop's website <<
r "\U1F680"
class: middle, center, inverse
r "\U1F914"
folder/ report_final.docx report_final_CTD.docx report_final_v2.docx report_final_v2-approved_CTD.docx report_final_v3_20211110.docx report_final_v3-20211110_approved-for-real.docx
.center[
r "\U1F629"
]
Too often we get trapped in the "final_final_v#" problem when collaborating that .red[we don't know which file is the actual final one].
This is where version control comes in.
.definition[
a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information.
]
.pull-left[
.red[Box] implements a centralized scheme: there is only .red[one source of truth] and .red[one history for each file].
When working on your own with one file, this is generally okay, but when you start collaborating on the same file, you might end up with the situation on the right.
]
.pull-right.font12[
# on Box folder/ document.docx document (some.person@email.com).docx
]
class: middle, center
class: middle, center, inverse
Over the next series of workshops, I'm going to show you how to use these tools in a fun, collaborative way. Ultimately what I hope for you to take away from this series is this:
Today, I hope to cover the basics of Github. By the end of the session, I hope that you will be able to:
class: middle, inverse, center
.pull-left.definition[
A decentralized version control system designed with collaboration in mind, allowing for projects to have multiple histories.
]
.pull-right.definition[
A web service that acts as a git project host, project management suite, and web host1.
]
You could work entirely with git and never use GitHub, and vice versa. There are many git project hosts out there (GitLab, Bitbucket, and more); we will focus on GitHub because it is incredibly popular and user-friendly.
.footnote.font10[
1These slides are hosted on GitHub!
]
class: center, middle
???
Show dashboard view of GitHub, and then point to the "Repositories" list. At that point, move to next slide to show "Repository" definition.
class: middle
.definition[
A git project
]
class: center, middle
???
class: middle
.definition[
A snapshot of your repository's history. The entire history of commits is called the commit log.
]
--
.definition[
A comparison of two commits -- showing the linewise changes between them.
]
???
class: middle, center
???
Branching is the core component that makes a git project "distributed".
.pull-left[
]
.pull-right[
]
Branches can either be local (on your machine) or remote (on someone else's machine).
.red[There is no inherent "central" branch], but often those are created out of convention.
class: middle, center
???
psanker
class: middle
.definition[
A process that copies an entire Github project from account A
to account B
. Often used in open-source software development setups.
]
background-image: url('images/branch-vs-fork.png')
class: inverse, center, middle
???
Help people with forking
In a collaborative setting, people generally .red[create new branches] for their own work .red[whenever they change things]. This applies to your own forks as well. We'll talk about branch naming conventions later.
For now, I will create a branch for my new changes.
???
# Patrick's section
" with some flavor text.class: middle, center, inverse
Now that we have work on our own branches and forks, how do we get it back into the main project?
This is where .red[Pull Requests] come in.
.definition[
A feature on Github that signals your intention to merge two branches (generally your own branch into some "main" branch). It provides a conversation interface to discuss your changes with other reviewers, request changes, even test code prior to merging.
]
???
class: middle, center, inverse
class: center, middle
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.