I just completed the very short Udemy course, Git Going Fast: One House Git Crash Course, which taught the basics of Git and connecting with GitHub. This is what I learned…
To be completely honest, I went into this course expecting it to cover many more commands and features of Git and GitHub, but on reflection it was just over an hour long and was designed to start from scratch so that was an unrealistic expectation. That being said, it solidified my understanding of some of the basics of Git and will serve as a solid foundation for taking a more advanced course at a later date.
Getting Help with Commands
If you ever need to find a command or need to know which arguments (or options) it can take, you could just Google it. Alternatively, you could ask Git directly like so:
# Shows help for the config command git help config
To get started, you need to configure your name and email address at a minimum. This essentially sets you up as a user.
# Configure your name git config --global user.name "Your Name Here" # Configure your email address git config --global user.email "firstname.lastname@example.org" # See a list of users git config --global --list
Initialising a Repository
Simply use the
git init command to initialise a new local repository, whether that be for a new or an existing project.
# Create a new project git init my-new-project # Start with an existing project cd my-existing-project git init
Adding (Staging) & Merging Commits
Whenever you make a change to a file – such as editing it, moving it or removing it – you will need to stage the change before committing it. You can stage changes in a couple of ways.
# Stages single changed file git add index.html # Stages all changed files git add .
Once you’ve staged all of your changes, it’s time to commit them.
# Commits staged changes git commit -m "This is the commit message"
You can do both the staging and the merging in the same command if you prefer to.
# Stages and commits all changes git commit -am "This stages and commits all changes"
Unstaging & Removing Changes
To unstage a change, use the
git reset command.
# Unstages the index.html file git reset HEAD index.html
To remove a change – reverting the changed file back to its original state – use the following command.
# Reverts any unstaged changes made to index.html git checkout -- index.html
Showing Commit History / Logs
If you don’t need or want to use a GUI tool, such as TortoiseGit, to review your repositories log, you can use the command line instead.
# Show logs git log # Show cleaner logs git log --online --graph --decorate --color
Moving & Removing Files
Sure, you can use Windows File Explorer or even Visual Studio Code to move a file to a different folder, but you can also use the command line.
# Moves index.html file to /destination-dir git mv index.html destination-dir
The same goes for removing files, too.
# Removes the index.html file git rm index.html
To ignore certain files and directories from being version controlled and keep them off of GitHub – such as log files, credentials and the
node_packages directory – create a
.gitignore file in the root of your repository directory and enter the name of the things you want Git to ignore.
# Ignores all log files *.log
Don’t forget that you’ll need to stage and commit the
.gitignore file as it’s part of the project.
Setting up SSH & Connecting with GitHub
In order to connect to your GitHub account and start working with remote repositories on there, you’ll need to first setup an SSH connection.
# Changes directory to your root, typically /Users/username cd ~ # Creates the .ssh directory (only if you don't have one) mkdir .ssh # Changes to .ssh directory cd .ssh # Generates SSH keys ssh-keygen -t rsa -C "email@example.com"
If all went well, you should be asked to confirm the location to save the key file. Follow these steps:
- Saving the key to the default location should be fine
- Enter a passphrase
- Copy the contents of the
- Sig in to GitHub and go to Account Settings > SSH Keys
- Click ‘Add SSH Key’
- Give it a name (your computer), paste in the key and save it
To test the connection, go back to your terminal and try the following.
# Permanently adds GitHub to known hosts file ssh -T firstname.lastname@example.org
Once you’re ready, click ‘New repository’ to create a new repository.
Give it a name and click ‘Create’.
Select the SSH option and go down to where it says “Push from existing repository”. Copy the first command from there. It will look something like this.
# Adds the remote GitHub repository as the origin git remote add origin email@example.com:robdcal/git-demo.git # Displays URLs of your remotes git remote -v
origin is the main repository on the remote side of things.
Pushing & Pulling Changes
Now that the connection has been established, you can
pull changes from the remote repository (if you have multiple developers working from the same project, or you work on the same project from different devices) and
push changes to GitHub, too.
# Pull the latest changes from the remote origin (GitHub) git pull origin master # Push your changes to the remote, use -u in your first push git push -u origin master # You can leave -u out of further pushes git push origin master