Git Commands for Software Engineers
Git is an essential tool for software engineers, enabling efficient version control, collaboration, and project management. Whether you're working on a solo project or part of a large team, mastering Git commands is crucial for streamlining your development workflow. This guide covers the most common Git commands you'll need, providing a solid foundation for managing your codebase, tracking changes, and coordinating with other developers. By familiarizing yourself with these commands, you can enhance your productivity and ensure smooth project progress. Let's dive into the key Git commands every software engineer should know.
1. git config
Purpose: Configure Git settings, such as user name and email.
Example: git config --global user.name "Your Name"
2. git init
Purpose: Initialize a new Git repository.
Example: git init
3. git clone
Purpose: Clone an existing repository.
Example: git clone https://github.com/user/repo.git
4. git status
Purpose: Show the working directory and staging area status.
Example: git status
5. git add
Purpose: Add file contents to the index (staging area).
Example: git add . (add all files)
6. git commit
Purpose: Record changes to the repository.
Example: git commit -m "Commit message"
7. git push
Purpose: Update remote refs along with associated objects.
Example: git push origin main
8. git pull
Purpose: Fetch from and integrate with another repository or local branch.
Example: git pull origin main
9. git branch
Purpose: List, create, or delete branches.
Example: git branch new-branch (create new branch)
10. git checkout
Purpose: Switch branches or restore working tree files.
Example: git checkout new-branch (switch to branch)
11. git switch
Purpose: Switch branches.
Example: git switch new-branch
12. git merge
Purpose: Join two or more development histories together.
Example: git merge new-branch (merge new-branch into current branch)
13. git rebase
Purpose: Reapply commits on top of another base tip.
Example: git rebase main
14. git log
Purpose: Show commit logs.
Example: git log --oneline
15. git diff
Purpose: Show changes between commits, commit and working tree, etc.
Example: git diff (show unstaged changes)
16. git show
Purpose: Show various types of objects.
Example: git show HEAD (show changes in the last commit)
17. git stash
Purpose: Stash the changes in a dirty working directory away.
Example: git stash
18. git stash pop
Purpose: Apply the changes recorded in the stash to the working directory.
Example: git stash pop
19. git clean
Purpose: Remove untracked files from the working directory.
Example: git clean -fd
20. git remote
Purpose: Manage set of tracked repositories.
Example: git remote add origin https://github.com/user/repo.git
21. git fetch
Purpose: Download objects and refs from another repository.
Example: git fetch origin
22. git remote -v
Purpose: Show the URLs that a remote name corresponds to.
Example: git remote -v
23. git tag
Purpose: Create, list, delete, or verify a tag object.
Example: git tag -a v1.0 -m "Version 1.0"
24. git push origin --tags
Purpose: Push all tags to the remote repository.
Example: git push origin --tags
25. git reset
Purpose: Reset current HEAD to the specified state.
Example: git reset --hard HEAD~1 (reset to previous commit)
26. git revert
Purpose: Create a new commit that undoes the changes from a previous commit.
Example: git revert HEAD
27. git checkout --
Purpose: Discard changes in the working directory.
Example: git checkout -- file.txt (discard changes in file.txt)
28. git cherry-pick
Purpose: Apply the changes introduced by some existing commits.
Example: git cherry-pick <commit-hash>
29. git branch -d
Purpose: Delete a branch.
Example: git branch -d branch-name
30. git branch -D
Purpose: Force delete a branch.
Example: git branch -D branch-name
31. git merge --no-ff
Purpose: Create a merge commit even when the merge resolves as a fast-forward.
Example: git merge --no-ff new-branch
32. git rebase -i
Purpose: Start an interactive rebase.
Example: git rebase -i HEAD~3
33. git diff --staged
Purpose: Show changes between the index and the last commit.
Example: git diff --staged
34. git blame
Purpose: Show what revision and author last modified each line of a file.
Example: git blame file.txt
35. git log --graph
Purpose: Show a graph of the commit history.
Example: git log --graph --oneline
36. git reflog
Purpose: Show a log of all references.
Example: git reflog
37. git stash list
Purpose: List all stashes.
Example: git stash list
38. git stash apply
Purpose: Apply a stash to the working directory.
Example: git stash apply stash@{1}
39. git stash drop
Purpose: Remove a single stash entry from the list of stashes.
Example: git stash drop stash@{1}
40. git remote show
Purpose: Show information about the remote repository.
Example: git remote show origin
41. git remote rm
Purpose: Remove a remote.
Example: git remote rm origin
42. git pull --rebase
Purpose: Fetch and rebase the current branch on top of the upstream branch.
Example: git pull --rebase origin main
43. git fetch --all
Purpose: Fetch all remotes.
Example: git fetch --all
44. git bisect
Purpose: Use binary search to find the commit that introduced a bug.
Example: git bisect start
45. git submodule
Purpose: Initialize, update, or inspect submodules.
Example: git submodule update --init
46. git archive
Purpose: Create an archive of files from a named tree.
Example: git archive --format=tar HEAD > archive.tar
47. git shortlog
Purpose: Summarize git log output.
Example: git shortlog -s -n
48. git describe
Purpose: Give an object a human-readable name based on an available ref.
Example: git describe --tags
49. git rev-parse
Purpose: Parse revision (or other objects) and retrieve its hash.
Example: git rev-parse HEAD
50. git tag -d
Purpose: Delete a tag from the local repository.
Example: git tag -d v1.0
51. git checkout -b
Purpose: Create and switch to a new branch.
Example: git checkout -b new-branch
52. git push origin --delete
Purpose: Delete a remote branch.
Example: git push origin --delete branch-name
53. git cherry
Purpose: Find commits not merged upstream.
Example: git cherry -v
54. git rm
Purpose: Remove files from the working tree and from the index.
Example: git rm file.txt
55. git mv
Purpose: Move or rename a file, directory, or symlink.
Example: git mv oldname.txt newname.txt
56. git reset HEAD
Purpose: Unstage changes.
Example: git reset HEAD file.txt
57. git log -p
Purpose: Show changes over time for a specific file.
Example: git log -p file.txt
58. git diff --cached
Purpose: Show changes between the index and the last commit (same as --staged).
Example: git diff --cached
59. git apply
Purpose: Apply a patch to files and/or to the index.
Example: git apply patch.diff
60. git format-patch
Purpose: Prepare patches for e-mail submission.
Example: git format-patch -1 HEAD
61. git am
Purpose: Apply a series of patches from a mailbox.
Example: git am < patch.mbox
62. git cherry-pick --continue
Purpose: Resume cherry-picking after resolving conflicts.
Example: git cherry-pick --continue
63. git fsck
Purpose: Verify the connectivity and validity of objects in the database.
Example: git fsck
64. git gc
Purpose: Cleanup unnecessary files and optimize the local repository.
Example: git gc
65. git prune
Purpose: Remove unreachable objects from the object database.
Example: git prune
66. git notes
Purpose: Add or inspect object notes.
Example: git notes add -m "Note message"
67. git whatchanged
Purpose: Show what changed, similar to git log.
Example: git whatchanged
68. git show-branch
Purpose: Show branches and their commits.
Example: git show-branch
69. git verify-tag
Purpose: Check the GPG signature of tags.
Example: git verify-tag v1.0
70. git show-ref
Purpose: List references in a local repository.
Example: git show-ref
Source: Odumosu Matthew