Priorities: π₯, π£, π₯, π (click to learn more)
There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:
- π₯: Understanding this material is required, it covers the base skills you'll
need for this module and the next. You do not need to finish all of them but
should feel comfortable that you could with enough time.
- π£: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
- π₯: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
- π: These concepts or skills are not necessary but are related to this module.
If you are finished with π₯, π£ and π₯ you can use the π exercises to push
yourself without getting distracted from the module's main objectives.
---
Practice the foundational workflows of software development by learning to write
Markdown locally on your own computer using Visual Studio Code (VSCode), the
Command Line Interface (CLI), and NPM scripts to automate your code's quality
(formatting, linting and spell checking).
[x] π₯ Folder Structures: You can explain how files and folders are stored
in your computer and can find, open or create files in your computer
without using the Command Line Interface.
π₯ Command Line Interface (CLI): In a Unix shell you can ...
[x] Open a new terminal window
[x] Navigate up and down directories using cd
[x] List the contents of a directory using ls
[x] View the contents of a file using cat
[x] Create new files using touch
[x] Create new folders using mkdir
[x] π₯ Markdown: You can write a document in Markdown with no syntax
mistakes that renders into a well-formatted document.
π₯ VSCode: You can complete these workflows in VScode, and can use
keyboard shortcuts to complete them all:
[x] Opening a repository in a new window
[x] Opening the VSCode terminal
[x] Adding a new file
[x] Adding a new folder
[x] Deleting a file
[x] Deleting a folder
[x] Previewing a Markdown File
[x] Formatting a Markdown document
[x] π₯ READMEs: You can write a README file that describes the project you
are working on, why it's helpful, and how someone can use it.
π₯ NPM: You can use NPM commands to verify your code's quality, this
includes ...
[x] Using npm install to install a project's dependencies
[x] Reading a package.json file to find which scripts are available for
the project
[x] Use npm run <script> to execute an npm script
π₯ Formatting Code: You can use Prettier to make sure all the code in your
project is well-formatted:
[x] You can use the Prettier VSCode extension to format a document while you
are writing it
[x] You can use npm run format to format all of the documents in your
project
[x] You can use npm run format:check to make sure all files are
well-formatted
π₯ Linting Folder and File Names: You can ...
[x] Use npm run lint:ls to check all folder and file names in your project
[x] You can fix all linting mistakes reported by npm run lint:ls
π₯ Linting Code: You can ...
[x] Use npm run lint:md to check all Markdown files in your folder for
linting mistakes
[x] You can fix all linting mistakes reported by npm run lint:md
π₯ Spell Check: You can ...
[x] Use the Code Spell Checker VSCode extension to correct spelling mistakes
in your Markdown documents while you are writing
[x] Use npm run spell-check to check the spelling in all the files of your
project
[x] Update .cspell.json to add words that should be allowed in your
project
π₯ File and Folder Naming Conventions: You can ...
[ ] Identify and follow the naming conventions for the project you are
working on.
[x] Use npm run lint:ls to check that all files and folders follow the
project's naming conventions.
[x] You can correct any file and folder names to make them match the project
conventions.
[x] π£ File Extensions: You can identify all of the languages covered at
HYF and give the correct file extension. You don't need to know the
languages, just recognize them.
[x] π£ Touch Typing: You can write a Markdown file without looking at your
keyboard to find any letters, numbers or special characters. (slowly is
ok!)
Practice using Git to save and organize your development process. You will learn
how you can use Git to go back to previous versions of your project, and to work
on different changes in parallel.
π₯ Git: Using the CLI you can ...
[x] Initialize a new git repository with git init
[x] Stage changes using git add <path>
[x] Check what is staged with git status
[x] Commit changes using git commit -m <message>
[x] Display your repository's git history using git log
[x] Create a new branch using git branch <branch-name>
[x] Check out a branch using git checkout <branch-name>
[x] Create a new branch and check it out using
git checkout -b <branch-name>
[x] Merge changes from one branch to another using git merge <branch-name>
[x] Update current branch (your branch) from main branch:
[x] Check out to main branch using git checkout main
[x] Pull changes from remote repository using git pull
[x] Check out to your branch using git checkout <branch-name>
[x] Merge changes from main branch to your branch using git merge main
[x] Merge changes from main branch to current branch in one step using
git pull origin main
[x] Return to a previous version of your project with git log and
git checkout <commit-hash>
[ ] Stash and retrieve uncommitted changes with git stash and git pop
[ ] Display list of existing remote URLs using git remote -v
[ ] Add a new remote repository URL using
git remote add <shortname> <remote-url>
[ ] Update a remote repository URL using
git remote set-url <exsit-shortname> <new-remote-url>
[ ] Rename a remote repository URL using
git remote rename <old-shortname> <new-shortname>
[ ] Remove a remote repository URL using git remote rm <exsit-shortname>
π₯ .gitignore: You can use a .gitignore file to describe which files
you don't want included in your git history.
π₯ VSCode: You can ...
[ ] Use the Git Graph extension to to visualize your repo's commit history
[ ] Use the Git Lens extension to investigate your repository's commit
history
[ ] Explain how the file tree in VSCode can show you which files have
uncommitted changes
[ ] π₯ Atomic Commits: You can save your development progress using small
commits with clear and helpful message.
[ ] π£ Feature Branches: You can organize your development process using
branches. You can create a new branch for each part of your project and
merge those changes to main when they are finished.
Learn how you can connect your local Git repositories with a GitHub repository
to add more structure to your development process and to share your projects.
π₯ Licenses: You can ...
[ ] Explain why it's important to include a license for your code on GitHub
[ ] Choose a license for your projects that matches how you want others to
use your code
[ ] π₯ GitHub SSH Key: You can connect your computer to your GitHub
account using an SSH key, clone using the SSH link, and push/pull using
your SSH connection.
π₯ GitHub Repositories: You can ...
[x] Create new repository on GitHub
[x] Write a description for your repository
[x] Turn on GitHub Pages
[x] Configure your repository to block pushing to main
[x] Configure your repository to block merging to main until Continuous
Integration (CI) checks have passed
π₯ Git Remote/Local Connection: You can ...
[x] Clone a remote repository to your computer using
git clone <remote-url>
[x] initialize a new repository locally and connect it to an empty remote
repository
[x] git push command is used to upload local repository content to a
remote repository
[ ] git fetch a primary command used to download contents from a remote
repository
[x] git pull command downloads the changes directly and then applies those
changes to the current working files
[x] push and pull changes between remote & local branches
[ ] You can distinguish between git fetch and git pull
[x] π₯ Pull Requests: You can create a pull request between two branches
in your repository and merge changes without causing any conflicts.
[x] π₯ PR templates: You can use a PR template to add a checklist to all
of your PRs so you are sure the code is great before merging to main.
[x] π₯ Continuous Integration: You can use GitHub Actions to check your
code's quality before merging a pull request to the main branch.
[x] π£ Local/Remote Branching Workflow: You can use a branching workflow
that keeps mistakes away from the main branch and prevents conflicts
from happening in GitHub. For each contribution to the project you can ...
Check out a new local branch and write your code
Check out main on your local machine
Pull changes from remote main to local main
Merge changes locally from main to your new branch
Fix any conflicts on your new branch before pushing!
Format and lint your code
Push your new local branch to your remote repository
Open a Pull Request from the new branch to main
Go through the PR's checklist to make sure everything is correct
Make sure all CI checks pass!
Merge your new remote branch to main
You can delete the branch after it's merged if you want to
Learn how to collaborate with a group on a single project hosted in a GitHub
repository. Practice using GitHub's project management features to organize your
group's tasks and to double-check your project's code quality.
[ ] π₯ Contributor Guidelines: Your group can define contributor
guidelines that describes how everyone can add their work to the project.
[ ] π₯ Code of Conduct: Your group can write a code of conduct for your
project that describes how everyone should communicate and what behavior
is considered unproductive.
[x] π₯ Repository Contributors: You can add group members as collaborators
in a repository.
[x] π₯ Issue Templates: Your group can use issue templates to make sure
all issues are complete and relevant to the project. in your repository
and merge changes without causing any conflicts.
[x] π₯ Code Review: You can use the PR Template and CI checks to review
another group member's code before merging it to main.
π£ GitHub Project Management: You can ...
[x] Use issues to define tasks in a group project. Each issue should have a
helpful title, complete description, and helpful labels.
[x] Use a Project Board to organize a project's issues
[x] Claim issues and track your progress with the project board
[x] Link a PR to your claimed issue
[x] Assign someone to review your PR
[x] Use GitHub code review features to discuss your code with your reviewer
[x] π£ Fixing Merge Conflicts: You can fix merge conflicts by selecting
which change to keep, or deciding how to combine them. If a conflict
occurs in a GitHub PR you can pull both branches and fix the conflict
locally.
Explore the wider world of Open Source software by learning how communities of
independent developers write and maintain the code we all rely on.
[ ] π₯ Finding Issues: You can read through an open source project's
issues and determine if there is one you can help with.
[ ] π£ Commenting in Issues: You can productively join the conversation in
an open source projects' issues.
[ ] π₯ Opening Issues: You can open a helpful issue in an open source
repository, following their contributor guidelines and code of conduct.
[ ] π Contributing: You can create a fork of an open source project and
open a PR that contributes something helpful and follows the Contributor
Guidelines and Code of Conduct.
Learning Objectives
Priorities: π₯, π£, π₯, π (click to learn more)
There is a lot to learn in this repository. If you can't master all the material at once, that's expected! Anything you don't master now will always be waiting for you to review when you need it. These 4 emoji's will help you prioritize your study time and to measure your progress: - π₯: Understanding this material is required, it covers the base skills you'll need for this module and the next. You do not need to finish all of them but should feel comfortable that you could with enough time. - π£: You have started all of these exercises and feel you could complete them all if you just had more time. It may not be easy for you but with effort you can make it through. - π₯: You have studied the examples and started some exercises if you had time. You should have a big-picture understanding of these concepts/skills, but may not be confident completing the exercises. - π: These concepts or skills are not necessary but are related to this module. If you are finished with π₯, π£ and π₯ you can use the π exercises to push yourself without getting distracted from the module's main objectives. ---
π₯ 0. Local Development Without Git
Practice the foundational workflows of software development by learning to write Markdown locally on your own computer using Visual Studio Code (VSCode), the Command Line Interface (CLI), and NPM scripts to automate your code's quality (formatting, linting and spell checking).
cd
ls
cat
touch
mkdir
npm install
to install a project's dependenciespackage.json
file to find which scripts are available for the projectnpm run <script>
to execute an npm scriptnpm run format
to format all of the documents in your projectnpm run format:check
to make sure all files are well-formattednpm run lint:ls
to check all folder and file names in your projectnpm run lint:ls
npm run lint:md
to check all Markdown files in your folder for linting mistakesnpm run lint:md
npm run spell-check
to check the spelling in all the files of your project.cspell.json
to add words that should be allowed in your projectnpm run lint:ls
to check that all files and folders follow the project's naming conventions.π₯ 1. Local Development With Git
Practice using Git to save and organize your development process. You will learn how you can use Git to go back to previous versions of your project, and to work on different changes in parallel.
git init
git add <path>
git status
git commit -m <message>
git log
git branch <branch-name>
git checkout <branch-name>
git checkout -b <branch-name>
git merge <branch-name>
git checkout main
git pull
git checkout <branch-name>
git merge main
git pull origin main
git log
andgit checkout <commit-hash>
git stash
andgit pop
git remote -v
git remote add <shortname> <remote-url>
git remote set-url <exsit-shortname> <new-remote-url>
git remote rename <old-shortname> <new-shortname>
git remote rm <exsit-shortname>
.gitignore
: You can use a.gitignore
file to describe which files you don't want included in your git history.main
when they are finished.π₯ 2. Local/Remote Development
Learn how you can connect your local Git repositories with a GitHub repository to add more structure to your development process and to share your projects.
main
main
until Continuous Integration (CI) checks have passedgit clone <remote-url>
git push
command is used to upload local repository content to a remote repositorygit fetch
a primary command used to download contents from a remote repositorygit pull
command downloads the changes directly and then applies those changes to the current working filespush
andpull
changes between remote & local branchesgit fetch
andgit pull
main
.main
branch.main
branch and prevents conflicts from happening in GitHub. For each contribution to the project you can ...main
on your local machinemain
to localmain
main
to your new branchmain
main
π£ 3. Remote Collaboration
Learn how to collaborate with a group on a single project hosted in a GitHub repository. Practice using GitHub's project management features to organize your group's tasks and to double-check your project's code quality.
main
.π₯ 4. Open Source Development
Explore the wider world of Open Source software by learning how communities of independent developers write and maintain the code we all rely on.
[ ] π Contributing: You can create a fork of an open source project and open a PR that contributes something helpful and follows the Contributor Guidelines and Code of Conduct.
Week 1
I Need Help With:
What went well?
What went less well?
the PR and the merge conflict
Lesson learned