Git Troubleshooting Advanced Guides
1. Common Git Errors and Their Resolutions
1.1 Error: “detached HEAD”
Issue: You are in a detached HEAD state, meaning changes are not attached to a branch.
Fix:
- Check your current HEAD:
git status
2. Attach the changes to a branch:
git checkout -b <branch-name>
3. Commit the changes:
git commit -m Attach changes to the branch
1.2 Error: “Merge conflicts”
Issue: Conflicts occur when changes overlap in a file during a merge.
Fix:
- Identify conflicting files:
git status
2. Open the files and resolve conflicts marked with <<<<<<<, =======, >>>>>>>.
3. Stage the resolved files:
git add <file>
4. Complete the merge:
git commit
1.3 Error: “Changes not staged for commit”
Issue: Unstaged changes remain local and aren’t committed.
Fix:
- View unstaged changes:
git status
2. Stage changes:
git add <file>
3. Commit the changes:
git commit -m Commit message
1.4 Error: “Push rejected” due to non-fast-forward updates
Issue: Your local branch is behind the remote branch.
Fix:
- Pull the latest changes:
git pull origin <branch-name>
2. Resolve any conflicts if prompted.
3. Push your changes again:
git push origin <branch-name>
1.5 Error: “Repository not found”
Issue: Incorrect remote URL or access issues.
Fix:
- Verify the remote URL:
git remote -v
2. Update the remote URL if incorrect:
git remote set-url origin <correct-url>
3. Check your access permissions and retry.
1.6 Error: “fatal: Authentication failed”
Issue: Credentials are incorrect or expired.
Fix:
- Update stored credentials:
git credential-cache exit
- Re-authenticate or use a personal access token (PAT) for HTTPS:
git remote set-url origin https://<username>:<PAT>@github.com/<repo>.git
2. Advanced Troubleshooting Techniques
2.1 Recover Deleted Branch
Fix:
- List all branches, including deleted ones:
git reflog
2. Find the commit hash of the deleted branch.
3. Restore the branch:
git checkout -b <branch-name> <commit-hash>
2.2 Fix Corrupted Git Repository
Fix:
- Verify repository integrity:
git fsck
2. Re-clone the repository:
git clone <repository-url>
2.3 Rewriting Commit History
Fix:
- Edit the last commit message:
git commit --amend
2. Rebase to edit multiple commits:
git rebase -i HEAD~<number-of-commits>
2.4 Stash Conflicts
Fix:
- Apply stash with conflicts:
git stash apply
2. Resolve conflicts and stage changes:
git add <file>
3. Drop the stash after resolution:
git stash drop
3. Git Performance Troubleshooting
3.1 Slow Fetch or Pull
Fix:
- Use shallow fetch for large repositories:
git fetch --depth=1
2. Optimize the repository:
git gc --aggressive --prune=now
3.2 Large File Handling
Fix:
- Identify large files:
git rev-list --objects --all | sort -k 2 | tail -n 10
2. Remove large files from history (use with caution):
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch <file>' \
--prune-empty --tag-name-filter cat -- --all
4. Troubleshooting Tips for Git Commands
4.1 Debugging Git Commands
Enable verbose mode for detailed logs:
git <command> --verbose
4.2 Reverting Changes
To undo a commit without deleting changes:
git reset --soft HEAD~1
To undo a commit and discard changes:
git reset --hard HEAD~1
4.3 Recover Lost Commits
- Locate the commit in reflog:
git reflog
2. Restore the commit:
git cherry-pick <commit-hash>
5. Best Practices for Git Troubleshooting
- Use descriptive commit messages.
- Always create a backup before performing destructive actions.
- Regularly sync your local branch with the remote branch.
- Use
.gitignoreto avoid committing unnecessary files.