Skip to content

Commit view

You can view commit details and changed files in the Commit view.

Commit view layout

To open a commit in the Commit view, click the commit in Commits.

The Commit view starts with a box that holds everything about the commit.

Banners at the top of the box tell you when the commit is in a special state. Banners with buttons come first.

  • HEAD: The commit is checked out. The banner says which branch the commit is checked out on, or that HEAD is detached, and what HEAD means.
  • BISECT: A bisect is in progress. The banner says what this commit is in the search, and shows the actions the commit can take, such as Mark as Good. For more information, see Bisect.
  • CHERRY-PICK, REVERT, MERGE, or REBASE: A paused operation applies this commit. While conflicts remain, the banner has an amber edge and an Open Staging button. When no conflicts remain, it turns green and tells you to click Commit or Continue in the conflict banner. During a rebase, the rebase’s other commits also say whether the rebase already replayed them or replays them in a later step.
  • COMPARISON: You marked this commit for comparison. The banner names the next step, and Show in Commits goes to the commit in Commits. For how marks work, see Commit actions.
  • SUBMODULE or OTHER REPOSITORY: The commit is from a submodule or from another repository, which the banner names. Commits shows only the history of this project, so it cannot show this commit.

Below the banners, each fact has a label:

  • Full hash: The full identifying hash of the commit, with a button to copy it.
  • Author: Who created the commit. Click the name to show that author’s commits in Commits.
  • Date: When the commit was created.
  • Status: Whether the commit is pushed. Not pushed shows for a commit that is only on your computer.
  • Branches and Tags: The branch and tag names on the commit. Click a name to open it in Branches or Tags.
  • Issue, or Issues for more than one: The issues related to the commit. See Related issues.
  • Signature: The signature status of a signed commit.
  • Submodule, or Submodules for more than one: The submodules the commit adds, updates, or removes. See Submodules and subtree references.
  • Subtree reference: A subtree path that the commit message records. See Submodules and subtree references.
  • Parent, or Parents for a merge: The commits the current commit is based on. Click one to open it.

A fact with nothing to show is left out.

Signature has three states.

  • Signed: The commit has a signature, which no one has checked. Your Git host checks the signatures on commits you push.
  • Verified: The repository host checked the signature and accepted it.
  • Not verified: The repository host could not verify the signature. A reason is shown when available.

Commit lists do not show signature status. To set up signing, see Signing.

The commit message is below the box, and the changed files are below the message. To copy part of the message, select it, right-click on it, and click Copy. See Copy selected text.

Click a branch name in the Branches row to open that branch in Branches. Right-click a branch name and select Copy Branch Name to copy it, Show in Branches to open it in Branches, or Show in Commits to go to the latest commit on that branch.

Click a tag name in the Tags row to open that tag in Tags. Right-click a tag name and select Copy Tag Name to copy it, Show in Tags to open it in Tags, or Show in Commits to go to this commit in Commits.

Commits shows the history of the repository opened in this Project Tab. When this commit is from another repository, for example the recorded commit of a submodule, Show in Commits is not available for its branch and tag names.

The Issues row shows the issues related to the commit. The data comes from the provider that your project uses for issues, with your account for that provider. To change the provider, select DevOps > Configure…. The row does not show when the project has no provider for issues, for example a Bitbucket repository, or when no account for the provider is connected.

Each issue shows its state, its number, its title, and a note:

  • Closed by this commit: The provider recorded that this commit closed the issue.
  • Closed by pull request #N (GitHub) or Closed by merge request !N (GitLab): A pull request or merge request that contains this commit closed the issue.
  • Linked to pull request #N or Linked to merge request !N: A pull request or merge request that contains this commit is set to close the issue.
  • Mentioned: The commit message refers to the issue.

A word such as “Fixes” in the message does not show as a close. The provider closes an issue only when the commit reaches the default branch, and the row says Closed only when the provider recorded the close.

The message can refer to an issue in the forms that the provider uses:

  • GitHub: #12, GH-12, owner/repo#12, or the issue’s address.
  • GitLab: #12, group/project#12, or the issue’s address. !12 is a merge request, not an issue.

A reference in code, for example `#12`, does not count, and a number that is not an issue does not show. In a submodule’s commit, #12 refers to the submodule’s own repository.

Click an issue to open it in this Project Tab.

The row shows the first five issues. Click Show all to show the others. Zide reads at most 10 references in one message. When the commit has more related issues than Zide loaded, the list ends with Some related issues were not loaded.

If Zide cannot get the issues, for example when you are offline, the row shows Could not load issues. Click Retry to try again.

Submodules and subtree references

The Submodule row shows each submodule that the commit changes, compared with its first parent. A merge is also compared with its first parent only. For a first commit, every submodule it contains is added.

Row textMeaning
libs/widget added at hashThe commit adds the submodule at this commit.
libs/widget old hash → new hashThe commit moves the submodule from the old commit to the new one.
libs/widget removed (was hash)The commit removes the submodule.

This information comes from the commit itself, so a submodule that was removed later still shows. Zide does not show the row when it cannot compare the commit with its parent, for example at the edge of a shallow clone.

The Subtree reference row shows the path in a git-subtree-dir: line at the end of the commit message. The tooltip of the path says Recorded in the commit message. A message can be edited, and other tools do not always write this line, so the row does not prove that the commit is a subtree operation.

Each path and hash uses the repository of the commit:

  • Click a submodule path to show the submodule in Submodules.
  • Click a subtree path to show the subtree in Subtrees.
  • Click a submodule hash to open that commit in the submodule.
  • For a commit from a submodule, a click still stays in the current project. A subtree path shows its folder in the File Browser, because the Subtrees tab that lists it belongs to the submodule. Right-click it for Show in Subtrees, which shows the subtree in the project of the submodule, and for Open Submodule as Project. The tooltip of Show in Subtrees says when it opens the submodule as a project; if that project is already open, Zide brings it to the front. A submodule path shows the submodule in the Submodules tab of the current project, which lists it under the path of the submodule that contains it.
  • Right-click a submodule path for Show in Submodules, Open Submodule as Project, and Show in File Browser.
  • Right-click a subtree path for Show in Subtrees and Show in File Browser.

What is available depends on your checkout now. Zide does not fetch or initialize a submodule. When an action is not available, the path or hash stays visible, and its tooltip gives the reason. A hash that cannot open has an outline instead of a fill, and a path that cannot open is plain text:

  • This submodule is not checked out: the submodule has no working copy here.
  • This commit is not available locally: the submodule does not have this commit. The other hash on the same line can still open.
  • This submodule is not available in this checkout: the path is not a submodule of this repository now.
  • Zide could not check this submodule: Zide could not read the submodules of this repository.
  • The recorded folder cannot be found: the folder does not exist now, so Show in File Browser is not available.
  • This subtree is not available in this checkout: Subtrees does not list this path. Zide does not guess that a folder at another path is the same subtree.

Commit actions

In the Commit view, right-click the content header or an ordinary background area, or select More actions in the header for these commands.

ActionResult
Create Branch from Here…Creates a branch at the commit, with an option to switch to it.
Create Tag HereCreates a tag and applies the tag to the commit.
Copy Commit Hash / Copy Commit MessageCopies the hash or message to the clipboard.
Mark for ComparisonSelects this commit as the base for a comparison.
Compare with hash…Compares the marked commit with this commit. Appears after you mark a different commit.
Show in ReflogOpens Reflog at an entry for this commit, if one exists.
Export Patch…Saves this commit as a .patch file in a folder you choose. Not available for a merge commit. See Export patches.
Export Patches from Here…Saves this commit and every later commit through the checked-out commit, one .patch file for each. See Export patches.
Assist with ThisAttaches the commit to a new or current Zide Assist conversation, or opens Ask Zide beside the commit to summarize or review it. See Assist with This.
Revert This Commit…Creates a new commit that reverts the changes of the commit.
Cherry-Pick This Commit…Applies the changes of the commit as a new commit on the current branch.
Reset to This Commit…Moves HEAD to this commit, updating the current branch if one is checked out. The reset mode determines which file and staged changes are kept.
Interactive Rebase from Here…Opens a plan to reorder, combine, reword, or drop this commit and later commits on the current branch. See Interactive Rebase.
BisectSelects the good and bad commits for a bug search. During a search, the BISECT banner carries the actions for this commit. See Bisect.
Amend This CommitModifies the previous commit.
Create Fixup Commit…Commits the staged changes as a fixup for this commit, so that a rebase can combine them into it. See Fix an older commit.
Checkout (detached HEAD)Checks out the commit without switching to a branch. Local changes that would be overwritten block the checkout.

Comparison marks are shared between Commits and commit views in the same Project Tab and repository. Mark one commit in either view, then open the other commit’s menu and select Compare with hash…. Opening the comparison clears the mark. Marks do not carry over to other projects or submodules.

You can amend only the most recent commit. While a merge, rebase, cherry-pick, revert, or patch series is in progress, creating a branch, amending, creating a fixup commit, reverting, cherry-picking, and resetting are disabled with an explanation.

Revert and cherry-pick start only when no operation is in progress, tracked files have no uncommitted changes, and no untracked or ignored files are in the way. Otherwise Zide lists the blockers and offers the actions that can clear them, such as Open Staging or Stash Changes and Review.

Changed files

The Changed Files section lists the files that the commit changed and how many lines were added or deleted in each file. The section does not show diffs. To read the changes, use the Diffs view:

  • Click View Diffs to open the commit in the Diffs view.
  • Click a file to open the Diffs view at that file. Zide selects the file and highlights it for a moment.
  • Ctrl+click (Cmd+click on macOS) or middle-click a file to open only that file in its own Diff view.

If a Diffs view for the commit is already open, Zide shows it and does not open a second one. The Commit view stays open. For more information, see Diffs view.

Click List view or Tree view after View Diffs to show the files as a list or in their folders. A new tab uses the view you selected last.

You can also select a file with the keyboard: press Tab until the row has a focus outline, then press Enter to open the Diffs view. Press Ctrl+Enter (Cmd+Enter on macOS) to open the file in its own Diff view.

For a project on GitHub, the list can come from GitHub, which lists at most 300 files for a commit. When GitHub lists 300 files and Zide cannot list the commit from your clone without a download, a line above the files says GitHub lists at most 300 files for a commit, so this list can be incomplete. Fetch the commit to see all of its files. The Diffs view shows the same line. After you fetch the commit, press F5 (Refresh Project) to read the list again from your clone. If a Diffs view for the commit is open, close it and click View Diffs again, because it keeps the list it opened with.

In a partial clone, Zide downloads the file versions a commit changed when you open a commit that it reads from your clone. If the download fails, the Commit view shows the reason and Retry. When the list comes from GitHub, Zide does not download them, so it can replace GitHub’s list with the full list from your clone only if your clone already has them. See Partial clones.

Right-click a file for these commands:

CommandResult
Open Diff, Open Diff in New TabOpens the diff of the file in its own Diff view.
Open in DiffsOpens the Diffs view at the file.
Open File, Open File in New TabOpens the file as it is in your working tree now, not the version in the commit. Not available when the file is not in the working tree.
Show in File BrowserSelects the file in the File Browser. Not available when the file is not in the working tree.

A submodule has Show in Submodules and Open Submodule as Project instead of Open File. Show in Submodules shows the submodule in the Submodules tab of the current project. Open Submodule as Project opens it in its own project tab. The list finds submodules from the commit itself. Show in Submodules is available while the repository lists the submodule, even when it is not checked out. Open Submodule as Project needs the submodule to be checked out. When a command is not available, its tooltip gives the reason.