A few swipes of your hand and it’s done for you
Overview
This is a hands-on tutorial on how you can configure and use Terminal and macros to save time working with Git and GitHub. The steps are intended for “newbies” new to the operating system.
Windows users: skip to the Windows installation section.
Default Terminal on MacOS
To open the Terminal program that comes with MacOS:
- Click the blue Finder icon at the left side of the Launch bar at the bottom of the screen.
- Click Go on the menu or press at the same time shift + command + A keys.
-
Scroll down to click the click the Utilities folder.
-
PROTIP: Drag the Terminal icon and drop it on the Launchbar so it’s easier to find in the future.
-
Click the Terminal icon to open it.
-
Press command + N to open using the Basic (default) Terminal settings (white background).
PROTIP: Alternately, enjoy different colors by clicking menu item Shell then New Window and selecting one of the options listed:
- Grass (dark green) I cd to my public website posts that go to GitHub
- Ocean (dark blue) I cd to my private notes repository
- Red Sands I cd to the code repository I’m working on
- Homebrew (green font on black) I cd to the server I’m working on
Alt Terminal on MacOS
PROTIP: Alternately, some prefer to use a 3rd-party Terminal program which has additional features.
-
Read about features not in the default program:
https://www.iterm2.com/features.html
To download and use it:
- Open a Terminal (as shown above).
- Install Homebrew.
-
Use Homebrew to download
brew install -g iterm2
-
Open a Finder and Go to Applications. Scroll to click iTerm2.
-
PROTIP: Drag the Terminal2 icon and drop it on the Launchbar so it’s easier to find in the future.
-
Read its documentation:
Edit .bash_profile on Mac
- Install a text editor you want to use.
-
Open a Terminal window.
-
If you have a new MacOS machine, create a file on your Home folder that MacOS executes before opening any Terminal window:
echo "#">>~/.bash_profile
~
designates the home folder for you account."#">>
adds a comment (#) to the bottom of the file in case the file has already been created, rather than wiping out the file..
in front of a file (in *nix systems such as Mac) denotes a hidden file.
-
In a Terminal, open to edit. Different editors have different commands. In this example, the Nano text editor is being used because Nano is built into MacOS:
nano ~/.bash_profile
Git shortcuts on MacOS
With the
~/.bash_profile
file in an editor: -
Highlight these lines, then press command+C to copy it your machine’s (invisible) Clipboard:
alias sbp='source ~/.bash_profile' alias rs='exec -l $SHELL' alias ll='ls -lri' alias dir='ls -alr' alias gwm='cd ~/gits/wilsonmar/wilsonmar.github.io;git status' alias gf='cd ~/gits/wilsonmar/futures;git status' alias gs='git status' alias gb='git branch -avv' alias gf='git fetch;git diff master..origin/master' alias gm='git merge origin/master' alias gl='clear;git status;git log --pretty=format:"%h %s %ad" --graph --since=1.days --date=relative;git log --show-signature -n 1' alias gbs='git status;git add . -A;git commit -m"Update";git push' function gas() { git status ; git add . -A ; git commit -m "$1" ; git push; } alias bs='bundle exec jekyll serve --config _config.yml,_config_dev.yml' alias gcs='cd ~/.google-cloud-sdk' alias myip="ifconfig en0 | grep inet | grep -v inet6 | cut -d ' ' -f2" alias aih='iothub-explorer'
Switch programs
-
Press command+Tab repeatedly until you see the icon for the text editor.
-
In the text editor, click your mouse at the bottom of the file.
-
Press command + V to paste from the Clipboard.
-
Save the file using the command expected by the editor you’re using.
For Nano, press control + W.
Update Terminal
-
Open a new Terminal instance, which loads the new version of bash_profile.
Try sbp alias for Mac
-
Instead of typing out
source ~/.bash_profile
, type:sbp
This invokes the alias defined:
alias sbp='source ~/.bash_profile'
This command just returns another prompt.
Edit aliases
You can delete the aliases you want or add others, then save the file again.
- Switch back and forth between the text editor and
-
Remember to source the file or open a new window.
- Skip to create Git container.
Windows Git Bash
- Click the Windows icon at the lower-left corner of your Desktop.
-
Type “Git”. If you see Git Bash, you likely used
choco install git
to install Git.Alternately, you would need to add a folder and edit the Path system environment variable.
- PROTIP: Right-click on “Git Bash” and select “Pin to taskbar” so it can be accessed quickly in the future.
- Open Notepad: click the Windows search icon, type no and click on Notepad in the list that appears. Alternately, you can use another text editor (such as Visual Studio Code).
-
Highlight and press Ctrl+C to copy the following to your Clipboard.
echo "Processing .bash_profile ..." alias gwm='cd ~/gits/wilsonmar/wilsonmar.github.io;git status' alias gs='git status' alias gf='cd ~/gits/wilsonmar/futures;git status' alias gb='git branch -avv' alias gl='clear;git status;git log --pretty=format:"%h %s %ad" --graph --since=1.days --date=relative;git log --show-signature -n 1' alias gbs='git status;git add . -A;git commit -m"Update";git push'
TODO: Figure out a replacement for this:
function gas() { git status ; git add . -A ; git commit -m "$1" ; git push; }
- Click Notepad menu File > Save As.
- Save to
C:\Program Files\Git\cmd
- For File Name, type
.bashrc
. -
To the right or “Save as Type” click on “Text Documents (*.txt)” and select All files (*.*).
This is so Windows does not automatically add “.txt” to the file name.
-
Click Save.
Container for Git cloning
Git commands need a GitHub repository to work with. So you’re welcome to my git-utilities repo, which has some commands you may like.
PROTIP: Setup a container directory to house (group together) repositories you clone from GitHub. This is because cloning creates only the repository name and not the user. Although the author can be found with a
git remote -v
command, you may want a way to put several repos for the same folder together, or additional related files such as pdf’s and website links. - On Mac: Open a Terminal window
On Windows, click on the Windows or Search icon, then type Po and right-click “Windows PowerShell” to select “Run as Admistrator. Click Yes to allow. -
Begin from your user account’s home page. On Mac or Windows PowerShell:
cd ~
-
Create a folder to house your development projects:
mkdir gits && cd gits
PROTIP: Instead of
gits
, some usedev
orSites
orProjects
to house related software development work, separate from other folders such as “Desktop” and “Document” under your MacOS user account folder.Here you can put various files related to Git, such as tutorial PDFs. However, some prefer to put such files in the
.git
folder that the Git client installer creates under your user home folder. That is a different folder than the .git folder created for each repository cloned. -
PROTIP: Create a folder representing the GitHub account to house new websites to be created (substituting “wilsonmar” with your GitHub user name):
mkdir wilsonmar
-
Only on MacOS, set permissions to write to the new folder. The $USER subsitute your own user name:
sudo chown -R $USER wilsonmar
sudo chmod -R +rwx wilsonmarType in your password when prompted.
-
Navigate into the containing folder where a new directory will be automatically built by git clone commands:
cd wilsonmar
Fork and/or Clone git-utilities
- Install a Git client if you have not already.
- Open another Terminal instance.
-
Clone:
git clone https://github.com/wilsonmar/git-utilities --depth=1
The
depth=1
argument specifies to obtain only the latest commits for each object, thus not obtaining prior history.Alternately, if you intend on making changes, on GitHub Fork the repo to your own account, then clone the repo under your own account.
-
Navigate into the new repo (type cd and press Tab for auto-complete):
cd git-utilities
Try aliases
Try the aliases defined above for MacOS and Windows:
-
Instead of typing out
git status
, type:gs
This invokes the alias defined:
alias gs='git status'
If there has been no changes, the output is:
On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean
-
Instead of typing out
git branch -avv
, type:gb
This invokes the alias defined:
alias gb='git branch -avv'
A sample response:
* master 54e5bb0 [origin/master] Update remotes/origin/HEAD -> origin/master remotes/origin/master 54e5bb0 Update
-
Instead of typing out
git log
, type:gl
This invokes the alias defined:
alias gl='clear;git status;git log --pretty=format:"%h %s %ad" --graph --since=1.days --date=relative;git log --show-signature -n 1'
A sample response:
* d590833 Update 19 hours ago * 6994b57 Update 21 hours ago commit 54e5bb00b5ea0bce2cdcb7626f94a8cad83b1abd (HEAD -> master, origin/master, origin/HEAD) Author: Wilson Mar <wilsonmar+github@gmail.com> Date: Fri Sep 29 12:04:29 2017 -0600 Update
-
Instead of typing out
git add . -A;git commit -m"Update";git push
, type:gbs
This invokes the alias defined:
alias gbs='git status;git add . -A;git commit -m"Update";git push'
-
Instead of typing out
git add
andgit commit
for a single commit, type:gas "Closes JIRA #231"
This invokes the alias defined:
function gas() { git status ; git add . -A ; git commit -m "$1" ; git push; }
PROTIP: Time saved using this can be huge because this reduces the “friction” to make small incremental changes.
-
Instead of typing out
git fetch upstream
andgit checkout master
, type:gfu
This invokes the alias defined:
alias gfu='git fetch upstream ; git checkout master'
PROTIP: Time saved using this can be huge because this reduces the “friction” to make small incremental changes.
Backup!
-
When you’re done, save the file again and exit the program using the command expected by the editor you’re using.
For Nano, press control + X to exit the program.
-
PROTIP: So that you can recover quickly in case your laptop is no longer available, copy the
~/.bash_profile
file to an off-site backup location such as drive.google.com, in a folder called “mac-setup” or whatever you prefer.
Windows Doskey
The Windows equivalant of the alias
command on Mac is:
doskey macroName=macroDefinition
Windows Macro parameters are referenced in the definition via $ prefixed positions: $1 through $9 and $* for all.
set “cdMe=cd some_path”
Usage (from command line or script)
%cdMe%
See https://superuser.com/questions/560519/how-to-set-an-alias-in-windows-command-line
https://technet.microsoft.com/en-us/library/bb490894.aspx
PROTIP: Many Windows users are limited to save files only in their own user folder. So we’ll go with that limitation.
-
Navigate
cd C:\Users\%USERNAME%
-
Create:
mkdir gits
.bashrc file
More
This is one of a series on Git and GitHub:
- Why Git? (file-based backups vs Git clone)
- Git basics (script)
- Git whoops (correct mistakes)
- Git command shortcuts
- Git interactive merge (imerge)
- Git patch
- Git utilities
- Git hooks
- GitHub data security
- GitHub actions for automation JavaScript
- GitHub REST API
- GitHub GraphQL API
- GitHub PowerShell API Programming
- GitHub GraphQL PowerShell Module