# git: Add diff view for stash entries \(\#38280\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/db404fc2e3ddc8992d17db3d8a755f4bb57971ad)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: db404fc2e3ddc8992d17db3d8a755f4bb57971ad

Requested commit: db404fc2e3ddc8992d17db3d8a755f4bb57971ad

Commit: db404fc2e3ddc8992d17db3d8a755f4bb57971ad

Tree: 427aa371999c1a915fef08529e4da98ff285a52b

Author: Alvaro Parker

Committer: GitHub

## Message

````
git: Add diff view for stash entries (#38280)

Continues the work from #35927 to add a git diff view for stash entries.

[Screencast From 2025-09-17
19-46-01.webm](https://github.com/user-attachments/assets/ded33782-adef-4696-8e34-3665911c09c7)

Stash entries are [represented as
commits](https://git-scm.com/docs/git-stash#_discussion) except they
have up to 3 parents:

```
       .----W (this is the stash entry)
      /    /|
-----H----I |
           \|
            U
```

Where `H` is the `HEAD` commit, `I` is a commit that records the state
of the index, and `U` is another commit that records untracked files
(when using `git stash -u`).

Given this, I modified the existing commit view struct to allow loading
stash and commits entries with git sha identifier so that we can get a
similar git diff view for both of them.

The stash diff is generated by comparing the stash commit with its
parent (`<commit>^` or `H` in the diagram) which generates the same diff
as doing `git stash show -p <stash entry>`. This *can* be
counter-intuitive since a user may expect the comparison to be made
between the stash commit and the current commit (`HEAD`), but given that
the default behavior in git cli is to compare with the stash parent, I
went for that approach.

Hoping to get some feedback from a Zed team member to see if they agree
with this approach.

Release Notes:

- Add git diff view for stash entries
- Add toolbar on git diff view for stash entries
- Prompt before executing a destructive stash action on diff view
- Fix commit view for merge commits  (see #38289)
````

## Parents

- [eda7a49f0185bec1f899ba3f3aa652152588a0f2](https://git.cafe/gitcafe/zed/commit/eda7a49f0185bec1f899ba3f3aa652152588a0f2?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/db404fc2e3ddc8992d17db3d8a755f4bb57971ad?format=markdown)
