Git Cheat Sheet

. Mostafa Lotfy

On This Page

Anything between `< >` is a variable part of the command. It changes according to the naming of your files and branches.

Configure


 $ git --version         # Check if git is installed on your system and check its version.


 $ open ~/.gitconfig     # Open `.gitconfig`--a hidden file at the home directory--and edit username and email.


 $ open .git/HEAD       # Rename a branch by switching to it,  open the `HEAD` file in the `.git` hidden folder, and edit the line `ref/heads/master`. Change the last part of the line, which is the current branch's name.

Working Locally


 $ git init              # Turn any local folder into a git repo.


 $ git status            # Check untracked, modified, or added files.


 $ git log               # list of all commits.


 $ git add <file>        # Stage a file to make it ready to be commited.


 $ git add <file1> <file2>       # Stage multiple files to commit them together.


 $ git add .             # `.` or `*` to stage all modified and untracked files.


 $ git commit -m "commit message" <file>             # Commit a specific file from the staged files. And add a commit message.


 $ git commit -m "commit message" <file1> <file2>    # Commit mutliple files.


 $ git commit -m "write a commit message"            # Commit all stagged files at once and add a commit message.


$ git commit --amend -m "new commit message"		# Use this to overwrite your very last commit with a new one when you make a mistake. Not jsut a mistake with the message you can add new files you forgot to add. Don't use this on published commits, unless you work on a private repo.

Working with Remotes


 $ git clone <url>       # Clone a repository to a local folder from a url. Example: `$ git clone https://github.com/mstflotfy/mstflotfy.github.io`


 $ git remote            # Get a list of all the names of remote repos you've specified.


 $ git remote --v        # Get a list of all remotes with their URLs.


 $ git remote add <origin> <url>     # Add a new remote repository.


 $ git push <origin> <branch>        # Push new commits from local branch to a remote repo. Example: `$ git push origin master`.


 $ git push -u <origin> <branch>     # Push commits and set a specific remote as the default remote to push and pull from.


 $ git push      # Push to the default remote.


 $ git push -f <origin> <branch>   # Force push commits. Changes made to the remote will not be saved. Will create issues if other pushing repos are active.  


 $ git fetch     # Fetch changes from the default remote without committing them. Can use `$ git diff` afterward to look at changes.


 $ git pull      # Pull commits from default remote to the local branch and commit them.


 $ git remote show <origin>      # Show more info about a specific remote.


 $ git remote remove <origin>    # Remove a remote by deleting the reference to it.

Wroking with branches


 $ git branch            # Show all local branches.


 $ git branch --all      # Show branches, including remotes.


 $ git branch <new-branch-name>  # Create a new branch. Example: `$ git branch testBranch`


 $ git switch <branch-name>      # Switch to a specific branch. Example: `$ git switch main`


 $ git diff <branch1> <branch2>       # Show the difference between two branches. Example: `$ git diff master origin`


 $ git merge <branch>        # Merge branches. Merge changes from named branch into the current branch.


 $ git branch -d <branch>    # Delete a branch.


 $ git checkout <commitHash>         # Cheackout an old commit in a headless branch. Then git will walk you through what to do.

Handling conflicts

  • Git will pause the committing process until the conflicts are resolved.
  • Run $ git status. You’ll find files with conflicts listed as unmerged.
  • Git will add conflict-resolution markers to files containing conflicts.
  • Open the files and resolve the conflicts manually and remove the markers.
  • Conflicting parts from different branches will be separated by =======.
  • Choose one side or merge the content manually.
  • Run $ git add on each file to mark it as resolved.
  • Then, you can run $ git commit to commit the files.

Help & Docs

Official Git Documentation


 $ git --help <verb>     # Docs for a specific command. Example: `$ git --help add`


 $ git <verb> -h         # Get a short list of some options for a command.

Other Cheat Sheets


Previous: git & GitHub Tutorial Next: Markdown (This post is coming soon)