Skip to content

Instantly share code, notes, and snippets.

@cferdinandi
Last active September 12, 2024 18:41
Show Gist options
  • Save cferdinandi/ef665330286fd5d7127d to your computer and use it in GitHub Desktop.
Save cferdinandi/ef665330286fd5d7127d to your computer and use it in GitHub Desktop.
Terminal Cheat Sheet
# Terminal Cheat Sheet
pwd # print working directory
ls # list files in directory
cd # change directory
~ # home directory
.. # up one directory
- # previous working directory
help # get help
-h # get help
--help # get help
man # manual
cat # output the contents of a file
mkdir # create new directory
open # open a file with the associated program, a directory with Finder, or a URL with the default web browser
ps # list all running processes
kill # terminate existing process
rmd # permanently delete file
rmdir # remove directory
## Working with Git
### Quick Start
git clone <url> # Clone directory
git checkout -b <new-branch> # Create new local branch
git push -u origin <new-branch> # Sync local branch with remote
git checkout <branch> # Checkout branch
git push origin <branch> # Push branch to remote
git branch -d <branchname> # deletes local branch
git push origin :<branchname> # deletes remote branch
git subtree push --prefix docs origin gh-pages # push docs as subtree to gh-pages
### Clone Directory
git clone <url>
### Create Project
cd project/
git init # initializes the repository
git add . # add those 'unknown' files
git commit # commit all changes, edit changelog entry
git rm --cached <file>... # ridiculously complicated command to undo, in case you forgot .gitignore
### Branching and Merging
git branch # show list of all branches (* is active)
git checkout -b linux-work # create a new branch named "linux-work"
<make changes>
git commit -a
git checkout master # go back to master branch
git merge linux-work # merge changesets from linux-work (Git >= 1.5)
git pull . linux-work # merge changesets from linux-work (all Git versions)
git branch -m <oldname> <newname> # rename branch
git branch -m <newname> # rename current branch
### Delete Project
git branch -d <branchname> # deletes local branch
git push origin :<branchname> # deletes remote branch
git remote prune <branchname> # update local/remote sync
### Merging Upstream
git remote -v # Get list of remote branches
git remote add upstream <upstream github url> # Add original as upstream
git remote -v # Check upstream
git fetch upstream # Get original repo
git checkout development # Switch to main branch in local fork
git merge upstream/development # Merge original with fork
git diff --name-only | uniq | xargs subl # Fix conflicts in Sublime Text
### Importing Patches
git apply < ../p/foo.patch
git commit -a
### Exporting Patches
<make changes>
git commit -a -m "commit message"
git format-patch HEAD^ # creates 0001-commit-message.txt
# (HEAD^ means every patch since one revision before the
# tip of the branch, also known as HEAD)
### Inspecting Revisions
# inspect history visually
gitk # this opens a Tk window, and shows you how the revisions are connected
# inspect history
git log # this pipes a log of the current branch into your PAGER
git log -p # ditto, but append a patch after each commit message
# inspect a specific commit
git show HEAD # show commit info, diffstat and patch
# of the tip of the current branch
### Referring to Revisions
# by name
git log v1.0.0 # show history leading up to tag "v1.0.0"
git log master # show history of branch "master"
# relative to a name
git show master^ # show parent to last revision of master
git show master~2 # show grand parent to tip of master
git show master~3 # show great grand parent to tip of master (you get the idea)
# by output of "git describe"
git show v1.4.4-g730996f # you get this string by calling "git describe"
# by hash (internally, all objects are identified by a hash)
git show f665776185ad074b236c00751d666da7d1977dbe
git show f665776 # a unique prefix is sufficient
# tag a revision
git tag v1.0.0 # make current HEAD known as "v1.0.0"
git tag interesting v1.4.4-g730996f # tag a specific revision (not HEAD)
### Comparing Revisions
# diff between two branches
git diff origin..master # pipes a diff into PAGER
git diff origin..master > my.patch # pipes a diff into my.patch
# get diffstat of uncommitted work
git diff --stat HEAD
## Sublime as default text editor
cd ~
mkdir bin
ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl
git config --global core.editor "subl -n -w"
### If that's not working
sudo rm -rf /usr/local/bin/subl
sudo ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin
@yashaswidhasarali
Copy link

Very helpful. Thank you!

@mophan
Copy link

mophan commented Apr 11, 2022

Thank you so much! It's very helpful!

@gviacava-code
Copy link

Awesome!!! thank you!

@Satishnaidu58
Copy link

Great

@scottwright-dev
Copy link

Thanks! Really useful.

@mywritebiz
Copy link

Thank you so much!

@FromlukDev
Copy link

Thanks for sharing

@aclima88
Copy link

aclima88 commented Sep 5, 2023

Super useful, thank you for sharing!

@fallsdevil
Copy link

Hello, I found this link in the youtube video about macrodroid shell script (here) maybe you can help me with my problem, I want to create a macro in this app (macrodroid) in which it deletes the files / media folders of whatsapp, but for some reason my attempts did not work I used some commands of attempts such as "rm /local folders/", "rmd", "rmdir", "rm -f", "rm - r", etc. and none of them worked, at most some commands showed the names of the image files in the folders I had created for testing, but they were never removed/deleted.
In the app I found some ready-made script macros to delete exactly whatsapp files, when testing, it didn't work either and I want help on how I can do this since there are more than one folder with several files inside.

@TheGreatHacker666
Copy link

I forgot a command to open a new port in the terminal, does anyone know it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment