Version control with Git is crucial for managing your codebase efficiently. This article covers important Git commands used in production and local environments with practical examples.
β 1. Checking Commit Differences Between Local and Remote
Remote repo : origin/feature/2025
Local repo : feature/2025
π· a. View Commits Only in Local
git log origin/feature/2025..feature/2025 --oneline
π Explanation: Shows commits that exist locally but not in the remote branch.
βοΈ Example Output:
8e3c1db Updated home page styles
d2a4f32 Added new API endpoint for views
π· b. View Commits Only in Remote
git log feature/2025..origin/feature/2025 --oneline
π Explanation: Shows commits that exist in the remote but not locally.
βοΈ Example Output:
f6d7aab Bug fix in auth middleware
c8e9b23 Updated README with deployment steps
Β 2. Visualizing Branch Differences
git log --oneline --graph --decorate --abbrev-commit origin/feature/2025..feature/2025
π Explanation: Visualizes commits only in your local branch compared to remote with a graph view.
βοΈ Example Output:
* d2a4f32 (HEAD -> feature/2025) Added new API endpoint for views
* 8e3c1db Updated home page styles
β 3. Checking File Differences Between Local and Remote
π· a. Local vs Remote
git diff origin/feature/2025..feature/2025
π Explanation: Shows file changes in local that are not in remote.
π· b. Remote vs Local
git diff feature/2025..origin/feature/2025
π Explanation: Shows file changes in remote that are not in local.
β 4. Fetch Remote Changes Without Merging
git fetch
π Explanation: Downloads updates from remote branches without merging them into your local branch.
β 5. Pulling Changes with Different Strategies
π· a. Merge (Default)
sudo git pull --no-rebase
Merges remote changes into local branch, creating a merge commit if necessary.
π· b. Rebase
sudo git pull --rebase
Reapplies your local commits on top of remote commits for a linear history.
π· c. Fast-Forward Only
sudo git pull --ff-only
Updates your branch only if it can be fast-forwarded; otherwise, it aborts.
π· d. Configure Pull Behavior Permanently
git config pull.rebase true Β # Always rebase on pull
git config pull.rebase falseΒ # Always merge on pull
Note : if you want to keep remote changes only discard local then
git reset --hard origin/feature/2025
β 6. Removing a File from Git Tracking but Keeping It Locally
π· Example: Ignoring db.sqlite3
sudo git rm --cached mysite/db.sqlite3
echo "/mysite/db.sqlite3" >> .gitignore
sudo git add .gitignore
sudo git commit -m "Stop tracking db.sqlite3 and update .gitignore"
sudo git push
βοΈ Explanation:
git rm --cached untracks the file while keeping it locally.
Adds it to .gitignore to prevent future tracking
β 7. How to avoid typing your GitHub username + PAT (Personal Access Token) every time you git fetch/pull/push.
β Recommended (Secure) Setup: Use PAT instead of password
1. Update your remote URL to include your username
Run this inside your repo:
git remote set-url origin https://github.com/Neptune998/<your-repo>.git
β οΈ Donβt hardcode the token here β weβll let Git credential helper handle it.
2. Use Git Credential Manager (secure cache)
Install credential helper if not already installed:
git config --global credential.helper store
Now, when you run git fetch or git push for the first time, Git will ask for credentials:
Username: Neptune998
Password: <your PAT>
β Alternative: Set credentials at system level
You can configure it permanently for all repos on that server:
git config --global user.name "Neptune998"
git config --global user.email "[email protected]"
git config --global credential.helper store
Then push once with username + token, and Git wonβt ask again.
β More Secure Option (Best Practice)
Instead of storing a PAT in plaintext:
Use SSH keys for authentication (preferred for servers).
Youβd set up an SSH key on your server and add the public key to your GitHub account β then no need for username/token at all.
β 8. Other Important Git Commands for Production and Local
Task | Command |
Check current branch | git branch |
Switch branch | git checkout branch_name |
Create new branch | git checkout -b new_branch |
Delete branch | git branch -d branch_name |
View remote branches | git branch -r |
View all branches | git branch -a |
Stage all changes | git add . |
Commit changes | git commit -m "message" |
View status | git status |
View last commit | git log -1 |
Force push (use with caution) | git push --force |
Discard local changes | git checkout -- file_name |
Reset to remote state (dangerous) | git reset --hard origin/branch_name |
π Summary
These Git commands help you:
Manage divergent branches
Check commit differences
Pull and merge efficiently
Avoid database merge conflicts in production
Maintain clean Git practices
Keep this as your Git command cheat sheet for daily development, deployments, and server management.