Place to learn how to better cooperate for coding tasks.
This repo contains tutorials on some basic tools that you will use intensively in our project. The name comes from EECS201, which contains a more comprehensive version of these tutorials (highly recommend taking this course).
Natively, Windows use another type of shell called CMD/PowerShell. Fortunately, with the help of Windows Subsystem for Linux (WSL), it's easy to access a linux shell within the subsystem. Check this link to install WSL.
Belonging to the family of "Unix Like" operating systems, macOS and Linux supports Unix Shell natively. Just open a terminal software (like Terminal.app on MacOS) and you are ready to go.
- basic shell command structure
- [TAB] - the most important key you need
- helps complete your unfinished command or path
- can even list available candidates
pwd
- print working directory associated with your shell session
cd
- change directory
- usage:
cd /place/you/want
cd ..
will take you to the parent directory
ls
- list contents in current directory
- some options:
-l
: display in list format-a
: also show hidden files (file start with.
)
man
: see manual for commandsctrl
+r
: search command history in bashctrl
+l
:clear
the screenctrl
+d
: send EOF, can be used to close the current shell program
- Windows(WSL)
- inside WSL, run
sudo apt install git
- inside WSL, run
- macOS
- install homebrew, a package manager for macOS
- run
brew install git
- Linux
- use your package manager
git init
: initialize git repogit status
: check repo statusgit log
: show loggit add
: stage filesgit checkout
: change location ofHEAD
git commit
: commit staged changes
git branch
: show branchesgit branch <branch-name>
: create a new branchgit checkout <branch-name>
: switch to another branch
git clone <URL>
: clone from a remote repogit remote -v
: will list your remotesgit pull
: pull from remote for new changesgit push
: send commits to the remote
Issues let you track your work on GitHub, where development happens. I'll introduce some useful components in an issue.
- Assignees - assign the task to someone!
- Labels - define your task!
- Development - Link your working branch to the issue!
- issue link - refer to other issues/PRs here!
Pull requests let you tell others about changes you've pushed to a branch in a repository on GitHub. It serve as a buffer for others to review your changes.
- merge, squash, or rebase?
merge
- merge all commits in both branch and create another "merge commit" to solve possible conflictssquash
- squash all incoming commits into a single commit and add to main branchrebase
- add all incoming commits "linearly" into the main branch- we prefer
squash
for a clean history
- create an issue called
first issue - [your name]
in this repo - refer your issue in Master issue list
- create a new branch in the
Development
tab - in your branch, add your name (and perhaps a link) in the Who finished this tutorial? section.
- add, commit, push
- create a pull request for your branch to merge into main branch
Finally... Python is the main language we'll use for our project. Since most people have experience with Python we won't spend too much time on it. If you have no previous experience, you can use this website to learn (and also other languages!).
IPython is an REPL for Python. It's a very handy interactive environment for you to test and learn Python. Do checkout if you haven't.
- EECS201 - Winter 2022 (better slides)
- EECS201 - Fall 2022 (better short videos)
- Andy Yang
- C.C
- Fengyuan Hu
- Hanxi Wan
- Howard Yang
- Yuxuan Liu
- Aditi Locula