English

GIT — Git

GIT A Git repository is browsed like a folder: the changed files, the branches, the history.

Open a repository

The GIT button in the bar jumps to the favourite project; its right-click gives the list: the known repositories, “Commit”, “History…”, the branches, “Stash…” and “Stashes”, “Tags…”, “Remotes”. A folder on the disk that is not yet a repository gets “Clone a repository here…” there. Projects add themselves as you enter them, and a project whose folder has disappeared is forgotten — unless it is its disk that is missing, an unplugged stick making nothing forgotten.

The state of a folder

Each row carries its colour: conflicted, untracked, modified, staged, ignored. A file is described by git on two axes — the index and the working copy — and a row has no room to show both: it is what remains to be done that decides the colour. The breadcrumb tells the current branch.

Stage and commit

“Commit” opens the changes view: one file per row, the Tracked column saying what git knows about it. You pick rows as anywhere else — click, Ctrl+click, Shift+click —, write the message at the bottom, and Commit goes with what is selected. Nothing selected, nothing goes: the button says so.

The Untracked chip, in the commit bar, hides what git does not track: a folder full of throwaway files no longer drowns the two you want to commit, and Ctrl+A no longer takes them along. Unchecked, it says how many it hides.

A repository’s changes view: three files, their tracking state, and the commit bar at the bottom.
The repository’s changes, and the commit bar: the message, what is selected, and the button.

See the differences

“Show differences” opens the block-by-block diff, between the working copy, the index (staged) and a commit — before and after are named there. A binary file says so rather than showing noise.

The actions

Branches and history

Create a branch, switch to it, merge — the entry carries the branch’s name, and answers nothing to merge: already up to date or merge stopped: some files conflict. “History…” lists the commits: their short hash, their subject, their author, their date. The left gutter draws the graph, each row on its own line, and a merge draws its stroke towards the neighbouring column. A double-click opens a commit’s detail: its full message and the files it touched.

A repository’s history: four commits, their subject, their author, and the branch graph in the gutter.
The history, its graph in the gutter: two branches leaving from the same root, and the merge that joins them.

The merge request tree

Merge request tree…, in the GIT button menu, draws the open MRs of the GitLab project the remote points to. Each one sits under the branch it starts from, indented by one step like a table of contents: the step tells the order in which to approve them, and a click on a card opens the MR in the browser.

A repository’s merge request tree: main, its indented MRs, and a chain of three MRs branched from one another
!31 was branched from !28, and !35 from !31: each sits under the one whose commits it carries, with “after” and “targets main”. The button on the right checks out the branch; the check mark shows main, where you are.

Exchange with the remote repository

“Pull” and “Push”, with the number of commits involved next to the label — zero is not written. A branch that does not exist yet on the other side goes with its upstream. Remotes are declared and removed from the same menu. When the server asks for credentials, Meneaufile asks in turn rather than staying stuck without a word.

Set aside

“Stash…” puts work in progress aside without committing it, with an optional description; “Stashes” — Stashed work — lists what is waiting, and from there you restore or discard. “Tags…” adds and removes tags the same way.

Who wrote this line

“Blame”, in a file’s menu, attributes each line to its commit and its author. It is the question you ask in front of a surprising line, and a list of commits does not answer it.

Conflicts

A conflicted file opens on its versions: the common version, ours, theirs, and the result you build. “Take all” pours in one whole side, “Resolve” saves — and the file leaves the conflicted category.

Clone

From a folder: the address (https://… or git@host:org/repo.git), the name of the folder to create, and a full or shallow history — the last N commits.

Bundles

A .bundle file is a Git repository packed into a single file: a way to carry a project on a stick, or hand it to someone, without a server. A double-click tells what it carries — its branches, its tags — and Clone here… turns it into an ordinary repository, next to it, without a network. In a repository, Create a bundle… in the GIT menu packs the whole of it into the folder of the other view.

If git is missing

Meneaufile calls the system’s git. Missing or outside the PATH, it says so rather than failing for no reason.

Meneaufile manual, in English.