Which tool does what? Git, GitHub, and Quarto

During the workshop, several tools appear on your screen at the same time, and their names sound alike. It is completely normal to lose track of which one is doing what. This page is the plain-English map: what each tool is, and which tool runs each command or button you use during the day.

The tools in one sentence each

Git is a version control program that runs on your computer. It records the history of your files: every commit, every branch, every merge. Git works even without an internet connection.

GitHub is a website (github.com) that hosts a copy of your Git repository in the cloud. Everything that involves other people happens here: pull requests, reviews, issues, and forks. GitHub is built on top of Git, but it is a separate product made by a separate company.

Quarto is a publishing program that turns a plain-text document (a .qmd file) into a finished report, website, or presentation. When you click Render, Quarto runs your R code and builds the output document. Quarto knows nothing about version control.

RStudio is the cockpit where you do all of this. It is not a platform of its own: the buttons in RStudio run Git, Quarto, or R commands for you. When you click Push in the Git pane, RStudio runs git push. A button is a command.

A rule of thumb

  • If it records or moves the history of your files, it is Git.
  • If it involves another person or a web browser, it is GitHub.
  • If it turns text and code into a document, it is Quarto.
  • If it is a button you click, it is RStudio running one of the above for you.

Every action of the day, mapped

What you do Where you click Command underneath Technology
Create a repository GitHub: New repository — GitHub
Clone a repository RStudio: New Project > Version Control > Git git clone Git
Pull RStudio Git pane: Pull git pull Git
Stage a file RStudio Git pane: Staged checkbox git add Git
Commit RStudio Git pane: Commit git commit -m "message" Git
Push RStudio Git pane: Push git push Git
Create a branch RStudio Git pane: New Branch git branch, then git switch Git
Switch branches RStudio Git pane: branch dropdown git switch Git
Open a pull request GitHub: Compare & pull request — GitHub
Review a pull request GitHub: Files changed > Review changes — GitHub
Merge a pull request GitHub: Merge pull request git merge (run on GitHub’s servers) Git, via GitHub
Open an issue GitHub: Issues > New issue — GitHub
Render a document RStudio: Render quarto render Quarto
Store your PAT RStudio Console: gitcreds::gitcreds_set() — R, talking to Git’s credential store

A dash (—) in the command column means there is no Git command for it at all: that action only exists on the GitHub website.

Only on GitHub

Some of the most important things you do during the day are not Git features. They were invented by GitHub as a collaboration layer on top of Git:

  • Pull requests and reviews
  • Issues
  • Forks

This is why you cannot find a git pull request command: it does not exist. A pull request lives on the website, not in your local repository.

Common mix-ups

Git is not GitHub. Git is the program on your computer that tracks history. GitHub is the website that hosts a copy and adds collaboration. You can use Git without GitHub; you cannot use GitHub meaningfully without Git.

Pull is not a pull request. Pull (git pull) downloads changes from GitHub to your computer. A pull request is a request on GitHub asking a person to review and merge a branch. Despite the shared word, one is a file transfer and the other is a conversation.

Commit is not push. Commit saves a snapshot in the history on your computer. Push uploads your commits to GitHub. Until you push, nobody else can see your commits. This is why the cycle has both: Pull, Stage, Commit, Push.

Render has nothing to do with Git. Clicking Render runs Quarto, which builds your document. It does not save a version, and it does not touch GitHub. If you want the rendered result in your history, you still commit and push afterwards.

If a term on this page is unfamiliar, look it up in the glossary.