DEV Community

Cover image for Essential Git Commands Every Developer Should Know
Christopher Glikpo  ⭐
Christopher Glikpo ⭐

Posted on

Essential Git Commands Every Developer Should Know

Whether you're a seasoned software engineer or just starting out in development, Git is one tool that everyone must master. Git is a powerful version control system that allows developers to track changes, collaborate seamlessly, and efficiently manage their codebases. However, getting familiar with Git can be overwhelming, especially when you're starting. This guide will break down some of the most essential Git commands that every developer should know to make their workflow more efficient and effective.

1. Setting Up Your Repository: git init

The first command that a developer encounters with Git is git init. This command initializes a new Git repository in your project directory. It sets up all the necessary files and directories required for tracking code changes.

$ git init
Enter fullscreen mode Exit fullscreen mode

After running this command, your project folder becomes a Git repository, meaning that you can now start version-controlling your work.

When to Use It: Every time you want to version control a new project or start tracking an existing project.

2. Cloning an Existing Repository: git clone

If you want to contribute to an existing project, you can use the git clone command to create a local copy of a remote repository.

$ git clone <repository-url>
Enter fullscreen mode Exit fullscreen mode

Cloning brings all the project files, branches, and the entire commit history into your local machine, enabling you to work on the codebase comfortably.

When to Use It: When you need to make changes to a remote project or when you are onboarding into an ongoing project.

3. Viewing Changes: git status & git diff

As you make modifications, it is crucial to know what has changed. The git status command allows you to see which files have been modified, added, or deleted in your working directory.

$ git status
Enter fullscreen mode Exit fullscreen mode

This command is useful for getting an overview of the state of your repository.

To take it a step further and see specific changes between the working directory and the last commit, you can use git diff.

$ git diff
Enter fullscreen mode Exit fullscreen mode

When to Use It: Use git status frequently to track changes before committing them. Use git diff to inspect actual line-by-line changes in your files.

4. Staging Changes: git add

Before committing changes to the repository, they must first be staged. Use the git add command to add files to the staging area.

$ git add <filename>
Enter fullscreen mode Exit fullscreen mode

You can also use git add . to stage all the modified files.

When to Use It: Whenever you are ready to save your changes and want to prepare them for committing.

5. Committing Changes: git commit

Once changes have been staged, it's time to create a commit. The git commit command records a snapshot of your changes.

$ git commit -m "Commit message describing the changes"
Enter fullscreen mode Exit fullscreen mode

A well-written commit message helps others understand what the changes are about.

When to Use It: Use it after staging changes, when you want to permanently add them to your project's history.

6. Viewing Commit History: git log

The git log command is used to show the history of commits made in the repository. This includes details such as the commit hash, author, date, and commit message.

$ git log
Enter fullscreen mode Exit fullscreen mode

For a simplified view, you can use git log --oneline to see just the commit hash and message.

When to Use It: When you want to understand the commit history or track changes made by different contributors.

7. Creating Branches: git branch

One of Git's most powerful features is branching. The git branch command is used to create and manage branches in your project.

$ git branch <branch-name>
Enter fullscreen mode Exit fullscreen mode

This command will create a new branch, which allows you to isolate changes, work on features independently, and avoid affecting the main project.

When to Use It: Use branches when developing a new feature, fixing a bug, or experimenting with new ideas.

8. Switching Branches: git checkout & git switch

To move between branches, you can use the git checkout command.

$ git checkout <branch-name>
Enter fullscreen mode Exit fullscreen mode

Alternatively, for a more intuitive command, you can use git switch:

$ git switch <branch-name>
Enter fullscreen mode Exit fullscreen mode

When to Use It: Whenever you want to work on or test a different feature that exists on another branch.

9. Merging Branches: git merge

Once you have completed your work on a feature branch, you can use the git merge command to integrate your changes into another branch (typically main or master).

$ git merge <branch-name>
Enter fullscreen mode Exit fullscreen mode

Merging allows you to bring all the commits from one branch into another, thus integrating new features or bug fixes.

When to Use It: When you want to consolidate changes from one branch to another.

10. Handling Merge Conflicts

Sometimes, when merging branches, you might encounter conflicts. This happens when different changes were made to the same line in the same file. Git will mark these conflicts, and it is up to you to resolve them manually.

Look for conflict markers like <<<<<<<, =======, and >>>>>>> in your files. After resolving the conflict, you can stage the file and commit the changes.

When to Use It: Whenever Git is unable to automatically merge branches due to conflicts.

11. Pushing Changes: git push

To share your commits with others, use the git push command. This sends your changes to a remote repository like GitHub or GitLab.

$ git push origin <branch-name>
Enter fullscreen mode Exit fullscreen mode

When to Use It: When you want to share your updates, contribute to a collaborative project, or simply back up your changes.

12. Pulling Changes: git pull

If someone else has pushed changes to the remote repository that you need, you can use git pull to fetch and merge these updates into your local branch.

$ git pull origin <branch-name>
Enter fullscreen mode Exit fullscreen mode

This command ensures that your local repository is synchronized with the remote one.

When to Use It: Always pull changes before starting new work to make sure you are working with the latest version.

13. Stashing Changes: git stash

Sometimes, you might want to switch branches but have uncommitted changes that you don't want to lose. The git stash command allows you to temporarily store those changes.

$ git stash
Enter fullscreen mode Exit fullscreen mode

When you are ready to resume work, you can reapply the changes using:

$ git stash pop
Enter fullscreen mode Exit fullscreen mode

When to Use It: Use it when you need to quickly switch branches or need a clean working directory.

14. Viewing Remote Repositories: git remote

To check which remote repositories your local repository is connected to, you can use git remote -v.

$ git remote -v
Enter fullscreen mode Exit fullscreen mode

This shows you the URLs of the repositories and the types of operations they are used for (fetch/push).

When to Use It: When you need to verify the connection between your local and remote repositories.

15. Undoing Changes: git reset & git revert

git reset

The git reset command is used to undo changes by moving the current branch back to a previous commit. Be careful with git reset as it will delete commit history.

$ git reset --hard <commit-hash>
Enter fullscreen mode Exit fullscreen mode

git revert

If you want to undo a commit without losing the history, you can use git revert. This command creates a new commit that undoes the changes made by a previous commit.

$ git revert <commit-hash>
Enter fullscreen mode Exit fullscreen mode

When to Use It: Use reset for local changes and revert for changes that have been shared with others.

16. Tagging Releases: git tag

If you want to mark specific points in your commit history (e.g., a version release), you can use git tag.

$ git tag -a v1.0.0 -m "First release"
Enter fullscreen mode Exit fullscreen mode

Tags are helpful for indicating release versions and milestones.

When to Use It: When you want to label important commits, like official releases.

Conclusion

Mastering Git can greatly improve your workflow, collaboration, and productivity. While there are dozens of commands in Git, these essential ones will cover the vast majority of your day-to-day version control needs. By understanding how to initialize, clone, commit, branch, merge, and push effectively, you can maintain a clean, well-managed codebase and collaborate effortlessly with your team.

Practice these commands regularly, and they will soon become second nature, making version control less of a daunting task and more of an empowering tool in your development journey.

Happy Coding!

If you have favorite Git commands or use specific workflows that have made a difference in your development process, feel free to share them in the comments. Follow me on YouTube for more tutorials

Top comments (0)