CodeNewbie Community

Cover image for Basics of Git for a Code Newbie
Dolamu Asipa
Dolamu Asipa

Posted on • Updated on

Basics of Git for a Code Newbie

Last month, I read up on the Git version control system. I actually found it difficult to understand initially, but after reading several articles on Git, watching a lot of YouTube videos, and completing my The Odin Project lesson, I think I have a clear idea now. Here is a summary of the git commands I learned, as a cheatsheet for future use by me - and any other fellow Git-beginners out there. But before we dive into all that, let's address this obvious question;

What Exactly is Git?

Git is a free and open-source distributed version control system.

Version control systems (also known as revision control, source control, or source code management) are used to manage changes to computer programs, documents, large web sites, and other collections of information. These systems provide an automatic way to track changes in projects thereby giving creators the power to view previous versions of files and directories, securely back up the project and its history, and collaborate easily and conveniently with others. They are crucial for tracking edits made by others, correcting errors, and protecting against spam and vandalism. Distributed version control (also known as distributed revision control) is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer.

Git is acessed via a command-line program called git which lets users transform an ordinary directory into a repository (a sort of enhanced directory with the additional ability to track changes to every file and sub-directory). Here are some basic commands frequently used when running Git πŸ‘‡

Git Cheatsheet

All Git commands consist of the command-line program git followed by the name of the command, so for the full command to:

  • to check the version of git installed on your system, type πŸ‘‰ git --version.

  • to set your global configuration settings (i.e. your git name and username), type πŸ‘‰ git config --global user.name <yourname> and git config --global user.email <email address>. To configure your local default git branch name to main (rather than master which has always been used), type πŸ‘‰ git config --global init.defaultBranch main. To check all your git configuration values, type πŸ‘‰ git config --list.

  • to initialize a git repository, type πŸ‘‰ git init. This creates a special hidden directory called .git where git stores the information it needs to track your project’s changes. (It’s the presence of a properly configured .git directory that distinguishes a git repository from a regular directory.)

  • to clone a remote repository on your computer, type πŸ‘‰ git clone <URL where the repository is>. To create a file in a git repository just use touch like you would when creating a new file on the command line. To check if you've successfully connected your remote repository to your local machine, navigate to the cloned repository and confirm its URL by typing πŸ‘‰ git remote -v. To change the URL of your git remote origin, type πŸ‘‰ git remote set-url origin <newurl>

  • to hide files in your repository that you don't want others to see, create a git ignore file using touch, type πŸ‘‰ touch .gitignore and manually include the names of those files (or file patterns/extensions) you want ignored to the .gitignore text file.

  • to check the status of your repository, use πŸ‘‰ git status. This enables you to see all changes to files within the respository, displayed to show; files that are merely in your working directory (these are termed 'untracked files'), files that have been edited but not yet (re)staged for commit and files in the staging area (with changes about to be committed to the repository).

  • to make a commit in git: first add the file (or files) you want to commit to the staging area, type πŸ‘‰ git add <filename> to add a single file or git add . to add all unstaged files in the current directory and git add -A to add all untracked files and directories in the repository. Then type πŸ‘‰ git commit -m <a message describing what you have done to make this snapshot different> to commit your changes.

  • to remove a single file from the staging area, type πŸ‘‰ git reset <filename> or git restore --staged <filename> or git rm --cached <filename>. To remove all files, simply type πŸ‘‰ git reset. To check the difference between the last commit and unstaged changes in your current project, type πŸ‘‰ git diff.

  • to upload/push your work to a remote repository, type πŸ‘‰ git push origin main. To see the history of your commits, type πŸ‘‰ git log. This command shows only the commits messages which isn't particularyly detailed. To see the full diffs representated by each commit, use the -p flag, type πŸ‘‰ git commit -p

  • to commit all changes in your currently existing files, pass the -a flag to the git commit command by typing πŸ‘‰ git commit -am <message>. The -a flag commits all pending changes to files in the repository. Always remember to type πŸ‘‰ git add -A when there are new files.

  • to see the difference between staged changes and the previous version of the repo, type πŸ‘‰ git diff --staged.

  • to correct an error in /update your last commit message, type πŸ‘‰ git commit --amend. To ascertain that your git commit message was properly updated, run git log to get the SHA of your last commit then view the diff using πŸ‘‰ git show <SHA>.

Resources

I generally use the The Odin Project curriculum to study. In addition to that, other resources I found useful while reading up on Git include:

  1. Learn Enough Git to be Dangerous
  2. Corey Schafer's Git Tutorial for Beginners on Youtube
  3. Fireship's Youtube video on Git It? How to use Git and Github

Hey, thanks for reading! πŸ‘‹ πŸ‘‹

Discussion (3)

Collapse
aaron profile image
Aaron McCollum

Great minds think alike. I’ve also recently done the Git lessons on TOP. Good luck going through the program. Are you currently going through Foundations as a whole?

Collapse
dolamu profile image
Dolamu Asipa Author • Edited

Yes I am. I'm at the 'Introduction to the Front End' section and currently reading up on HTML, CSS and JavaScript's basics per the assignment. What about you, Aaron?

Collapse
aaron profile image
Aaron McCollum

Just finished Git! So I’m a little behind you but on the same section. Will continue this afternoon on front end. πŸ˜ƒ