Skip to main content

Git for Version Control

Git is a distributed version control system (VCS) that allows multiple people to work on a project at the same time without overwriting each other's changes. It was created by Linus Torvalds, the creator of Linux, in 2005.

Why is Git Used?

Git is used for several reasons:

Collaboration: Git allows multiple developers to work on the same project simultaneously. Each developer works on their own local copy of the project, and changes can be shared between developers through a central repository.

Version Control: Git keeps track of all changes made to a project. This means that if a mistake is made, it's easy to go back to an earlier version of the project.

Branching and Merging: Git allows developers to create branches to work on new features or fixes without affecting the main project. Once the work on a branch is complete, it can be merged back into the main project.

Distributed Development: Every Git directory on every computer is a full-fledged repository with complete history and full version-tracking capabilities, independent of network access or a central server.

When is Git Used?

Git is used whenever there is a need to maintain versions of a project, track changes, or collaborate. This is often the case in software development, but Git can also be used for other types of projects such as writing a book, creating a website, or even managing a to-do list.

Where is Git Used?

Git is used in a wide variety of settings, from individual developers working on personal projects, to small teams collaborating on a project, to large organizations and open-source projects with hundreds or thousands of contributors. It's used in academia, industry, government, and by hobbyists. It's also the foundation for many web-based hosting services like GitHub, GitLab, and Bitbucket, which provide a user-friendly interface for managing Git repositories.

Working with a Git Repository

This guide will walk you through the process of working with a Git repository, from setting up Git on your local machine to deploying changes to the production environment.

Installing and Configuring Git

First, you need to install Git on your machine. Here's how:

  • Windows: Download the Git for Windows installer from the official Git website and run it.
  • Mac: Use Homebrew by typing brew install git in your terminal.
  • Linux: Use your distribution's package manager. For Ubuntu, this would be sudo apt-get install git.

After installation, configure your Git username and email using the following commands:

git config --global user.name "Your Name" git config --global user.email "your-email [at] example.com"

Setting Up SSH Keys for GitHub Authentication

To interact with GitHub without having to enter your credentials every time, you can set up SSH keys:

  1. Open Terminal.
  2. Generate a new SSH key with the command ssh-keygen -t ed25519 -C "your-email [at] example.com".
  3. When prompted to "Enter a file in which to save the key," press Enter to accept the default location.
  4. At the prompt, type a secure passphrase.
  5. Add your SSH key to the ssh-agent with the command ssh-add ~/.ssh/id_ed25519.
  6. Copy the SSH key to your clipboard with pbcopy < ~/.ssh/id_ed25519.pub.
  7. Go to GitHub, navigate to Settings -> SSH and GPG keys -> New SSH key, paste your key, and click "Add SSH key".

Cloning a Git Repository

To create a local copy of a repository, use the git clone command followed by the URL of the repository:

git clone git [at] github.com:username/repository.git

Making Changes and Pushing Them

After making changes to your files, stage them with git add:

git add .

Commit your changes with git commit:

git commit -m "Your descriptive commit message"

Push your changes to the repository with git push:

git push origin master

Creating and Switching Between Branches

To create a new branch, use git branch:

git branch new-branch

Switch to your new branch with git checkout:

git checkout new-branch

Pulling Changes and Resolving Conflicts

To update your local repository with the latest changes, use git pull:

git pull origin master

If there are merge conflicts, Git will tell you. Open the files with conflicts and look for the <<<<<<, ======, and >>>>>> markers to understand and resolve the conflicts.

Pushing a Branch and Submitting a Pull Request

Push your branch to the remote repository:

git push origin new-branch

Then, go to the GitHub page of the original repository and click on "Pull request" -> "New pull request" -> "compare across forks" -> select your fork and branch -> "Create pull request".

Merging Pull Requests and Deploying

After reviewing the changes, you can merge the pull request. Click the "Merge pull request" button, then "Confirm merge".

For deployment, the process depends on your production environment. Some services automatically deploy the master branch, while others require manual deployment.

Best Practices

  • Commit often and write clear commit messages.
  • Use branches for new features or bug fixes.
  • Always pull the latest changes before starting to work.
  • Resolve merge conflicts as soon as they occur.
  • Regularly push your branches to the remote repository.

Remember, practice makes perfect. The more you use Git, the more comfortable you'll become with its workflow. Happy coding!