{"id":13412715,"url":"https://github.com/NeogitOrg/neogit","last_synced_at":"2025-03-14T18:32:00.080Z","repository":{"id":37459427,"uuid":"273193579","full_name":"NeogitOrg/neogit","owner":"NeogitOrg","description":"An interactive and powerful Git interface for Neovim, inspired by Magit","archived":false,"fork":false,"pushed_at":"2024-10-29T09:05:01.000Z","size":4580,"stargazers_count":4011,"open_issues_count":107,"forks_count":235,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-10-29T10:57:15.237Z","etag":null,"topics":["git","hacktoberfest","lua","neovim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NeogitOrg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-18T09:14:28.000Z","updated_at":"2024-10-29T10:05:56.000Z","dependencies_parsed_at":"2023-10-14T01:15:25.177Z","dependency_job_id":"352b2714-5ea8-447f-8415-624cad63e7a5","html_url":"https://github.com/NeogitOrg/neogit","commit_stats":null,"previous_names":["neogitorg/neogit","timuntersberger/neogit"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeogitOrg%2Fneogit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeogitOrg%2Fneogit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeogitOrg%2Fneogit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeogitOrg%2Fneogit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NeogitOrg","download_url":"https://codeload.github.com/NeogitOrg/neogit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243625161,"owners_count":20321247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","hacktoberfest","lua","neovim"],"created_at":"2024-07-30T20:01:28.238Z","updated_at":"2025-03-14T18:32:00.073Z","avatar_url":"https://github.com/NeogitOrg.png","language":"Lua","readme":"\u003cdiv align=\"center\"\u003e\n    \u003cdiv\u003e\n        \u003cdiv\u003e\u003cimg src=\"https://github.com/NeogitOrg/neogit/assets/7228095/7684545f-47b5-40e2-aedd-ccf56e0553f4\" width=\"400px\"/\u003e\u003c/div\u003e\n        \u003cdiv\u003e\u003ch1\u003eNeogit\u003c/h1\u003e\u003c/div\u003e\n    \u003c/div\u003e\n    \u003ctable\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\n                \u003cstrong\u003eA git interface for \u003ca href=\"https://neovim.io\"\u003eNeovim\u003c/a\u003e, inspired by \u003ca href=\"https://magit.vc\"\u003eMagit\u003c/a\u003e.\u003c/strong\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/table\u003e\n\n  [![Lua](https://img.shields.io/badge/Lua-blue.svg?style=for-the-badge\u0026logo=lua)](http://www.lua.org)\n  [![Neovim](https://img.shields.io/badge/Neovim%200.10+-green.svg?style=for-the-badge\u0026logo=neovim)](https://neovim.io)\n  [![MIT](https://img.shields.io/badge/MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n  \u003ca href=\"https://dotfyle.com/plugins/NeogitOrg/neogit\"\u003e\n    \u003cimg src=\"https://dotfyle.com/plugins/NeogitOrg/neogit/shield?style=for-the-badge\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\n![preview](https://github.com/NeogitOrg/neogit/assets/7228095/d964cbb4-a557-4e97-ac5b-ea571a001f5c)\n\n\n## Installation\n\nHere's an example spec for [Lazy](https://github.com/folke/lazy.nvim), but you're free to use whichever plugin manager suits you.\n\n```lua\n{\n  \"NeogitOrg/neogit\",\n  dependencies = {\n    \"nvim-lua/plenary.nvim\",         -- required\n    \"sindrets/diffview.nvim\",        -- optional - Diff integration\n\n    -- Only one of these is needed.\n    \"nvim-telescope/telescope.nvim\", -- optional\n    \"ibhagwan/fzf-lua\",              -- optional\n    \"echasnovski/mini.pick\",         -- optional\n  },\n  config = true\n}\n\n```\n\nIf you're not using lazy, you'll need to require and setup the plugin like so:\n\n```lua\n-- init.lua\nlocal neogit = require('neogit')\nneogit.setup {}\n```\n\n## Compatibility\n\nThe `master` branch will always be compatible with the latest **stable** release of Neovim, and usually with the latest **nightly** build as well.\n\n## Configuration\n\nYou can configure neogit by running the `neogit.setup()` function, passing a table as the argument.\n\n\u003cdetails\u003e\n\u003csummary\u003eDefault Config\u003c/summary\u003e\n\n```lua\nlocal neogit = require(\"neogit\")\n\nneogit.setup {\n  -- Hides the hints at the top of the status buffer\n  disable_hint = false,\n  -- Disables changing the buffer highlights based on where the cursor is.\n  disable_context_highlighting = false,\n  -- Disables signs for sections/items/hunks\n  disable_signs = false,\n  -- Changes what mode the Commit Editor starts in. `true` will leave nvim in normal mode, `false` will change nvim to\n  -- insert mode, and `\"auto\"` will change nvim to insert mode IF the commit message is empty, otherwise leaving it in\n  -- normal mode.\n  disable_insert_on_commit = \"auto\",\n  -- When enabled, will watch the `.git/` directory for changes and refresh the status buffer in response to filesystem\n  -- events.\n  filewatcher = {\n    interval = 1000,\n    enabled = true,\n  },\n  -- \"ascii\"   is the graph the git CLI generates\n  -- \"unicode\" is the graph like https://github.com/rbong/vim-flog\n  -- \"kitty\"   is the graph like https://github.com/isakbm/gitgraph.nvim - use https://github.com/rbong/flog-symbols if you don't use Kitty\n  graph_style = \"ascii\",\n  -- Show relative date by default. When set, use `strftime` to display dates\n  commit_date_format = nil,\n  log_date_format = nil,\n  -- Show message with spinning animation when a git command is running.\n  process_spinner = false,\n  -- Used to generate URL's for branch popup action \"pull request\".\n  git_services = {\n    [\"github.com\"] = \"https://github.com/${owner}/${repository}/compare/${branch_name}?expand=1\",\n    [\"bitbucket.org\"] = \"https://bitbucket.org/${owner}/${repository}/pull-requests/new?source=${branch_name}\u0026t=1\",\n    [\"gitlab.com\"] = \"https://gitlab.com/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}\",\n    [\"azure.com\"] = \"https://dev.azure.com/${owner}/_git/${repository}/pullrequestcreate?sourceRef=${branch_name}\u0026targetRef=${target}\",\n  },\n  -- Allows a different telescope sorter. Defaults to 'fuzzy_with_index_bias'. The example below will use the native fzf\n  -- sorter instead. By default, this function returns `nil`.\n  telescope_sorter = function()\n    return require(\"telescope\").extensions.fzf.native_fzf_sorter()\n  end,\n  -- Persist the values of switches/options within and across sessions\n  remember_settings = true,\n  -- Scope persisted settings on a per-project basis\n  use_per_project_settings = true,\n  -- Table of settings to never persist. Uses format \"Filetype--cli-value\"\n  ignored_settings = {\n    \"NeogitPushPopup--force-with-lease\",\n    \"NeogitPushPopup--force\",\n    \"NeogitPullPopup--rebase\",\n    \"NeogitCommitPopup--allow-empty\",\n    \"NeogitRevertPopup--no-edit\",\n  },\n  -- Configure highlight group features\n  highlight = {\n    italic = true,\n    bold = true,\n    underline = true\n  },\n  -- Set to false if you want to be responsible for creating _ALL_ keymappings\n  use_default_keymaps = true,\n  -- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size.\n  -- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it.\n  auto_refresh = true,\n  -- Value used for `--sort` option for `git branch` command\n  -- By default, branches will be sorted by commit date descending\n  -- Flag description: https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---sortltkeygt\n  -- Sorting keys: https://git-scm.com/docs/git-for-each-ref#_options\n  sort_branches = \"-committerdate\",\n  -- Default for new branch name prompts\n  initial_branch_name = \"\",\n  -- Change the default way of opening neogit\n  kind = \"tab\",\n  -- Disable line numbers\n  disable_line_numbers = true,\n  -- Disable relative line numbers\n  disable_relative_line_numbers = true,\n  -- The time after which an output console is shown for slow running commands\n  console_timeout = 2000,\n  -- Automatically show console if a command takes more than console_timeout milliseconds\n  auto_show_console = true,\n  -- Automatically close the console if the process exits with a 0 (success) status\n  auto_close_console = true,\n  notification_icon = \"󰊢\",\n  status = {\n    show_head_commit_hash = true,\n    recent_commit_count = 10,\n    HEAD_padding = 10,\n    HEAD_folded = false,\n    mode_padding = 3,\n    mode_text = {\n      M = \"modified\",\n      N = \"new file\",\n      A = \"added\",\n      D = \"deleted\",\n      C = \"copied\",\n      U = \"updated\",\n      R = \"renamed\",\n      DD = \"unmerged\",\n      AU = \"unmerged\",\n      UD = \"unmerged\",\n      UA = \"unmerged\",\n      DU = \"unmerged\",\n      AA = \"unmerged\",\n      UU = \"unmerged\",\n      [\"?\"] = \"\",\n    },\n  },\n  commit_editor = {\n    kind = \"tab\",\n    show_staged_diff = true,\n    -- Accepted values:\n    -- \"split\" to show the staged diff below the commit editor\n    -- \"vsplit\" to show it to the right\n    -- \"split_above\" Like :top split\n    -- \"vsplit_left\" like :vsplit, but open to the left\n    -- \"auto\" \"vsplit\" if window would have 80 cols, otherwise \"split\"\n    staged_diff_split_kind = \"split\",\n    spell_check = true,\n  },\n  commit_select_view = {\n    kind = \"tab\",\n  },\n  commit_view = {\n    kind = \"vsplit\",\n    verify_commit = vim.fn.executable(\"gpg\") == 1, -- Can be set to true or false, otherwise we try to find the binary\n  },\n  log_view = {\n    kind = \"tab\",\n  },\n  rebase_editor = {\n    kind = \"auto\",\n  },\n  reflog_view = {\n    kind = \"tab\",\n  },\n  merge_editor = {\n    kind = \"auto\",\n  },\n  description_editor = {\n    kind = \"auto\",\n  },\n  tag_editor = {\n    kind = \"auto\",\n  },\n  preview_buffer = {\n    kind = \"floating_console\",\n  },\n  popup = {\n    kind = \"split\",\n  },\n  stash = {\n    kind = \"tab\",\n  },\n  refs_view = {\n    kind = \"tab\",\n  },\n  signs = {\n    -- { CLOSED, OPENED }\n    hunk = { \"\", \"\" },\n    item = { \"\u003e\", \"v\" },\n    section = { \"\u003e\", \"v\" },\n  },\n  -- Each Integration is auto-detected through plugin presence, however, it can be disabled by setting to `false`\n  integrations = {\n    -- If enabled, use telescope for menu selection rather than vim.ui.select.\n    -- Allows multi-select and some things that vim.ui.select doesn't.\n    telescope = nil,\n    -- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `diffview`.\n    -- The diffview integration enables the diff popup.\n    --\n    -- Requires you to have `sindrets/diffview.nvim` installed.\n    diffview = nil,\n\n    -- If enabled, uses fzf-lua for menu selection. If the telescope integration\n    -- is also selected then telescope is used instead\n    -- Requires you to have `ibhagwan/fzf-lua` installed.\n    fzf_lua = nil,\n\n    -- If enabled, uses mini.pick for menu selection. If the telescope integration\n    -- is also selected then telescope is used instead\n    -- Requires you to have `echasnovski/mini.pick` installed.\n    mini_pick = nil,\n  },\n  sections = {\n    -- Reverting/Cherry Picking\n    sequencer = {\n      folded = false,\n      hidden = false,\n    },\n    untracked = {\n      folded = false,\n      hidden = false,\n    },\n    unstaged = {\n      folded = false,\n      hidden = false,\n    },\n    staged = {\n      folded = false,\n      hidden = false,\n    },\n    stashes = {\n      folded = true,\n      hidden = false,\n    },\n    unpulled_upstream = {\n      folded = true,\n      hidden = false,\n    },\n    unmerged_upstream = {\n      folded = false,\n      hidden = false,\n    },\n    unpulled_pushRemote = {\n      folded = true,\n      hidden = false,\n    },\n    unmerged_pushRemote = {\n      folded = false,\n      hidden = false,\n    },\n    recent = {\n      folded = true,\n      hidden = false,\n    },\n    rebase = {\n      folded = true,\n      hidden = false,\n    },\n  },\n  mappings = {\n    commit_editor = {\n      [\"q\"] = \"Close\",\n      [\"\u003cc-c\u003e\u003cc-c\u003e\"] = \"Submit\",\n      [\"\u003cc-c\u003e\u003cc-k\u003e\"] = \"Abort\",\n      [\"\u003cm-p\u003e\"] = \"PrevMessage\",\n      [\"\u003cm-n\u003e\"] = \"NextMessage\",\n      [\"\u003cm-r\u003e\"] = \"ResetMessage\",\n    },\n    commit_editor_I = {\n      [\"\u003cc-c\u003e\u003cc-c\u003e\"] = \"Submit\",\n      [\"\u003cc-c\u003e\u003cc-k\u003e\"] = \"Abort\",\n    },\n    rebase_editor = {\n      [\"p\"] = \"Pick\",\n      [\"r\"] = \"Reword\",\n      [\"e\"] = \"Edit\",\n      [\"s\"] = \"Squash\",\n      [\"f\"] = \"Fixup\",\n      [\"x\"] = \"Execute\",\n      [\"d\"] = \"Drop\",\n      [\"b\"] = \"Break\",\n      [\"q\"] = \"Close\",\n      [\"\u003ccr\u003e\"] = \"OpenCommit\",\n      [\"gk\"] = \"MoveUp\",\n      [\"gj\"] = \"MoveDown\",\n      [\"\u003cc-c\u003e\u003cc-c\u003e\"] = \"Submit\",\n      [\"\u003cc-c\u003e\u003cc-k\u003e\"] = \"Abort\",\n      [\"[c\"] = \"OpenOrScrollUp\",\n      [\"]c\"] = \"OpenOrScrollDown\",\n    },\n    rebase_editor_I = {\n      [\"\u003cc-c\u003e\u003cc-c\u003e\"] = \"Submit\",\n      [\"\u003cc-c\u003e\u003cc-k\u003e\"] = \"Abort\",\n    },\n    finder = {\n      [\"\u003ccr\u003e\"] = \"Select\",\n      [\"\u003cc-c\u003e\"] = \"Close\",\n      [\"\u003cesc\u003e\"] = \"Close\",\n      [\"\u003cc-n\u003e\"] = \"Next\",\n      [\"\u003cc-p\u003e\"] = \"Previous\",\n      [\"\u003cdown\u003e\"] = \"Next\",\n      [\"\u003cup\u003e\"] = \"Previous\",\n      [\"\u003ctab\u003e\"] = \"InsertCompletion\",\n      [\"\u003cspace\u003e\"] = \"MultiselectToggleNext\",\n      [\"\u003cs-space\u003e\"] = \"MultiselectTogglePrevious\",\n      [\"\u003cc-j\u003e\"] = \"NOP\",\n      [\"\u003cScrollWheelDown\u003e\"] = \"ScrollWheelDown\",\n      [\"\u003cScrollWheelUp\u003e\"] = \"ScrollWheelUp\",\n      [\"\u003cScrollWheelLeft\u003e\"] = \"NOP\",\n      [\"\u003cScrollWheelRight\u003e\"] = \"NOP\",\n      [\"\u003cLeftMouse\u003e\"] = \"MouseClick\",\n      [\"\u003c2-LeftMouse\u003e\"] = \"NOP\",\n    },\n    -- Setting any of these to `false` will disable the mapping.\n    popup = {\n      [\"?\"] = \"HelpPopup\",\n      [\"A\"] = \"CherryPickPopup\",\n      [\"d\"] = \"DiffPopup\",\n      [\"M\"] = \"RemotePopup\",\n      [\"P\"] = \"PushPopup\",\n      [\"X\"] = \"ResetPopup\",\n      [\"Z\"] = \"StashPopup\",\n      [\"i\"] = \"IgnorePopup\",\n      [\"t\"] = \"TagPopup\",\n      [\"b\"] = \"BranchPopup\",\n      [\"B\"] = \"BisectPopup\",\n      [\"w\"] = \"WorktreePopup\",\n      [\"c\"] = \"CommitPopup\",\n      [\"f\"] = \"FetchPopup\",\n      [\"l\"] = \"LogPopup\",\n      [\"m\"] = \"MergePopup\",\n      [\"p\"] = \"PullPopup\",\n      [\"r\"] = \"RebasePopup\",\n      [\"v\"] = \"RevertPopup\",\n    },\n    status = {\n      [\"j\"] = \"MoveDown\",\n      [\"k\"] = \"MoveUp\",\n      [\"o\"] = \"OpenTree\",\n      [\"q\"] = \"Close\",\n      [\"I\"] = \"InitRepo\",\n      [\"1\"] = \"Depth1\",\n      [\"2\"] = \"Depth2\",\n      [\"3\"] = \"Depth3\",\n      [\"4\"] = \"Depth4\",\n      [\"Q\"] = \"Command\",\n      [\"\u003ctab\u003e\"] = \"Toggle\",\n      [\"x\"] = \"Discard\",\n      [\"s\"] = \"Stage\",\n      [\"S\"] = \"StageUnstaged\",\n      [\"\u003cc-s\u003e\"] = \"StageAll\",\n      [\"u\"] = \"Unstage\",\n      [\"K\"] = \"Untrack\",\n      [\"U\"] = \"UnstageStaged\",\n      [\"y\"] = \"ShowRefs\",\n      [\"$\"] = \"CommandHistory\",\n      [\"Y\"] = \"YankSelected\",\n      [\"\u003cc-r\u003e\"] = \"RefreshBuffer\",\n      [\"\u003ccr\u003e\"] = \"GoToFile\",\n      [\"\u003cs-cr\u003e\"] = \"PeekFile\",\n      [\"\u003cc-v\u003e\"] = \"VSplitOpen\",\n      [\"\u003cc-x\u003e\"] = \"SplitOpen\",\n      [\"\u003cc-t\u003e\"] = \"TabOpen\",\n      [\"{\"] = \"GoToPreviousHunkHeader\",\n      [\"}\"] = \"GoToNextHunkHeader\",\n      [\"[c\"] = \"OpenOrScrollUp\",\n      [\"]c\"] = \"OpenOrScrollDown\",\n      [\"\u003cc-k\u003e\"] = \"PeekUp\",\n      [\"\u003cc-j\u003e\"] = \"PeekDown\",\n      [\"\u003cc-n\u003e\"] = \"NextSection\",\n      [\"\u003cc-p\u003e\"] = \"PreviousSection\",\n    },\n  },\n}\n```\n\u003c/details\u003e\n\n## Usage\n\nYou can either open Neogit by using the `Neogit` command:\n\n```vim\n:Neogit             \" Open the status buffer in a new tab\n:Neogit cwd=\u003ccwd\u003e   \" Use a different repository path\n:Neogit cwd=%:p:h   \" Uses the repository of the current file\n:Neogit kind=\u003ckind\u003e \" Open specified popup directly\n:Neogit commit      \" Open commit popup\n```\n\nOr using the lua api:\n\n```lua\nlocal neogit = require('neogit')\n\n-- open using defaults\nneogit.open()\n\n-- open a specific popup\nneogit.open({ \"commit\" })\n\n-- open as a split\nneogit.open({ kind = \"split\" })\n\n-- open with different project\nneogit.open({ cwd = \"~\" })\n```\n\nThe `kind` option can be one of the following values:\n- `tab`      (default)\n- `replace`\n- `split`\n- `split_above`\n- `split_above_all`\n- `split_below`\n- `split_below_all`\n- `vsplit`\n- `floating`\n- `auto` (`vsplit` if window would have 80 cols, otherwise `split`)\n\n## Popups\n\nThe following popup menus are available from all buffers:\n- Bisect\n- Branch + Branch Config\n- Cherry Pick\n- Commit\n- Diff\n- Fetch\n- Ignore\n- Log\n- Merge\n- Pull\n- Push\n- Rebase\n- Remote + Remote Config\n- Reset\n- Revert\n- Stash\n- Tag\n- Worktree\n\nMany popups will use whatever is currently under the cursor or selected as input for an action. For example, to cherry-pick a range of commits from the log view, a linewise visual selection can be made, and using either `apply` or `pick` from the cherry-pick menu will use the selection.\n\nThis works for just about everything that has an object-ID in git, and if you find one that you think _should_ work but doesn't, open an issue :)\n\n## Highlight Groups\n\nSee the built-in documentation for a comprehensive list of highlight groups. If your theme doesn't style a particular group, we'll try our best to do a nice job.\n\n\n## Events\n\nNeogit emits the following events:\n\n| Event                   | Description                              | Event Data                                      |\n|-------------------------|------------------------------------------|-------------------------------------------------|\n| `NeogitStatusRefreshed` | Status has been reloaded                 | `{}`                                            |\n| `NeogitCommitComplete`  | Commit has been created                  | `{}`                                            |\n| `NeogitPushComplete`    | Push has completed                       | `{}`                                            |\n| `NeogitPullComplete`    | Pull has completed                       | `{}`                                            |\n| `NeogitFetchComplete`   | Fetch has completed                      | `{}`                                            |\n| `NeogitBranchCreate`    | Branch was created, starting from `base` | `{ branch_name: string, base: string? }`        |\n| `NeogitBranchDelete`    | Branch was deleted                       | `{ branch_name: string }`                       |\n| `NeogitBranchCheckout`  | Branch was checked out                   | `{ branch_name: string }`                       |\n| `NeogitBranchReset`     | Branch was reset to a commit/branch      | `{ branch_name: string, resetting_to: string }` |\n| `NeogitBranchRename`    | Branch was renamed                       | `{ branch_name: string, new_name: string }`     |\n| `NeogitRebase`        | A rebase finished                        | `{ commit: string, status: \"ok\"\\|\"conflict\" }`    |\n| `NeogitReset`         | A branch was reset to a certain commit   | `{ commit: string, mode: \"soft\"\\|\"mixed\"\\|\"hard\"\\|\"keep\"\\|\"index\" }` |\n| `NeogitTagCreate`     | A tag was placed on a certain commit     | `{ name: string, ref: string }`                   |\n| `NeogitTagDelete`     | A tag was removed                        | `{ name: string }`                                |\n| `NeogitCherryPick`    | One or more commits were cherry-picked    | `{ commits: string[] }`                          |\n| `NeogitMerge`         | A merge finished                          | `{ branch: string, args = string[], status: \"ok\"\\|\"conflict\" }` |\n| `NeogitStash`         | A stash finished                          | `{ success: boolean }` |\n\n## Versioning\n\nNeogit follows semantic versioning.\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/NeogitOrg/neogit/blob/master/CONTRIBUTING.md) for more details.\n\n## Special Thanks\n\n- [kolja](https://github.com/kolja) for the Neogit Logo\n- [gitgraph.nvim](https://github.com/isakbm/gitgraph.nvim) for the \"kitty\" git graph renderer\n- [vim-flog](https://github.com/rbong/vim-flog) for the \"unicode\" git graph renderer\n\n","funding_links":[],"categories":["Git","Lua","LUA"],"sub_categories":["Quickfix"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNeogitOrg%2Fneogit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNeogitOrg%2Fneogit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNeogitOrg%2Fneogit/lists"}