Git, the ubiquitous version control system, is a developer's best friend. (For a refresher on terms like rebase, stash, reflog, and bisect, see our [Git glossary](/git/glossary).) While many are familiar with the basics like `git commit` and `git push`, Git offers a treasure trove of advanced features that can significantly enhance your workflow. Let's explore some of these lesser-known but incredibly useful commands.

### **1. Git Stash: Temporarily Save Changes**

When you're working on a feature and need to switch to another task, `git stash` is your lifesaver. It allows you to temporarily save your uncommitted changes without creating a commit.

```bash
git stash
```

To apply the stashed changes later:

```bash
git stash apply
```

### **2. Git Reflog: Recover Lost Commits**

Accidentally deleted a branch or reset to the wrong commit? Don't panic. `git reflog` keeps track of all changes to the tip of branches, enabling you to recover lost commits.

```bash
git reflog
```

### **3. Git Bisect: Find the Commit That Broke Your Code**

Debugging can be a tedious process. `git bisect` performs a binary search through your commit history to pinpoint the exact commit that introduced a bug.

```bash
git bisect start
git bisect good <last known good commit>
git bisect bad <bad commit>
```

### **4. Git Cherry-Pick: Selectively Apply Commits**

Need to apply specific commits from one branch to another without merging the entire branch? `git cherry-pick` is your tool.

```bash
git cherry-pick <commit-hash>
```

### **5. Git Reset --hard: Reset Your Code Completely**

Use with caution! `git reset --hard` resets your working directory to a specific commit, discarding any uncommitted changes.

```bash
git reset --hard <commit-hash>
```

### **6. Git Blame: Who Changed This Line of Code?**

Curious about who made the last change to a particular line of code? `git blame` shows you the history.

```bash
git blame <file>
```

### **7. Git Clean: Remove Untracked Files**

Keep your working directory clean with `git clean`. It removes untracked files from your project.

```bash
git clean -f
```

### **8. Git Shortlog: Summarize Contributions**

Get a quick overview of contributions by author with `git shortlog`.

```bash
git shortlog -s -n
```

By mastering these advanced Git commands, you'll streamline your development process, improve code quality, and collaborate more effectively.