Sign in Join
Wiki copytemporary

LazGitGui: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11LazGitGui is a graphical user interface for [git](https://git-scm.com/book/en/v2). In some way, it tries to resemble the popular 'git gui' program but with some additions that allow you, with a glimpse, to get a general state of the repository.
22
33If you don't know what 'git gui' is, it is a graphical representation of the git status, where one can do basic git operations like watch what files in the work space have been modified and see the differences with respect to the original files. It also allow move files between the unstaged and the staged area and make commits from it, and much more.
44
55Git Gui has some cool features not yet available in this program, for example the selective apply or revert of hunk and line changes from the diff viewer.
66
77Contrary to Git Gui which relies on gitk for that feature, LazGitGui has a log feature that allows you to see the history of the repository and do some operation on branches and commits.
88
99## Features
1010
1111- Clone a repository.
1212- Handle remotes dialog.
1313- State panel that shows current and upstream branches. Commits ahead and commits behind. Tag description.
1414- User defined buttons to assign click and run git commands.
1515- List of untracked and changed files, selecting a file shows its changes or if is untracked the file content. A context menu contain numerous features like:
1616 - Stage one, some or all files.
1717 - Restore one, some or all changed files.
1818 - Delete files.
1919 - Edit files in an internal or external editor.
2020 - Create a patch from the selection and save it to a file.
2121 - Show the file history.
2222 - Modify the ignore file with information of the selected file.
2323 - Show tracked and ignored files.
2424- List of staged files ready to be committed.
2525- Buttons for reload, fetch, pull, push and push with dialog.
2626- Amend a commit.
2727- A repository information button.
28-- <u>A Log window</u> listing commits with the following features:
28+- A Log window listing commits with the following features:
2929 - Filter or Search commits by multiple terms.
3030 - Show the changes made by a commit.
3131 - Show the repository tree at some commit in history, this helps to check what was the content of certain file at some commit in particular.
3232 - Show the file history of the selected file.
3333 - Show the graph detailing the relationship between commits.
3434 - Regular expression rules for matching bug, commit and URL links in commit subject (commit links are valuable for pointing at previous commits in history).
3535- The log window context menu has the following features:
3636 - Go to the checked out commit (HEAD or Detached HEAD), go to parent or child commit.
3737 - Create a tag a this commit.
3838 - Delete tags.
3939 - Switch to a tag.
4040 - Create a branch a this commit.
4141 - Switch to a branch.
4242 - Delete local and remote branches.
4343 - Start a Rebase on top of the selected commit.
4444 - Cherry Pick this commit.
4545 - Revert this commit.
4646 - Merge.
4747 - Start a Bisect operation by selecting a pair of commits.
4848 - Reset current branch to a commit.
4949 - Switch to a commit.
5050 - Copy commit information: full, sha, subject, etc.
5151- Other features:
5252 - Lock to start directory. While launching LazGitGui with the --locked argument, it will show the repository restricted to the given directory instead of the whole repository.
5353 - Dropping a patch file in LazGitGui allows to apply the patch to the repository (no commit is created by this operation).
5454 - The log window title show information about the repository state.
5555 - Git state and links to actions. LazGitGui now detects if the repository is doing any of the following operations in some intermediate state: Rebase, Cherry pick, Revert, Merge and Bisect. It will show some options for taking a corresponding action, here an example of a rebase with conflicts: ![Rebase in conflict state](/wiki-images/8/8a/Lazgitgui_rebasingconflict.png)
5656
5757## Screenshots
5858
5959***Status Screen*** ![](/wiki-images/1/12/Lazgitgui_main.png)
6060
6161***Log Screen*** ![](/wiki-images/f/f7/Lazgitgui_log.png)
6262
6363***File History Screen*** ![](/wiki-images/8/84/Lazgitgui_filehistory.png)
6464
6565## Download
6666
6767Clone from the [LazGitGui repository](https://gitlab.com/jramx/lazgitgui)
6868
6969## Documentation
7070
7171The following are extracts from the documentation available in the docs/documentation.md file
7272
7373## Building LazGitGui
7474
7575At the moment there are no binary releases available so the program has to be compiled and used from the compiling directory.
7676
7777This is a [Lazarus/Free Pascal](https://www.lazarus-ide.org) program so you will need Lazarus in order to compile it, a standard install will be enough as LazGitGui does not use special packages.
7878
7979The most recent Lazarus release should be fine but if it's not please let me know.
8080
8181In Lazarus, open the project file lazgitgui.lpi and compile it.
8282
8383## How to use
8484
8585LazGitGui can use a supplied path passed as the last parameter in the command line, it can be a directory or a file residing within the working area of the repository at any level, if a path is not specified it will use the current working directory. Some suggestions for invoking LazGitGui:
8686
8787From Lazarus, an external tool can be configured with the following properties:
8888
8989(Linux + Windows)
9090
9191 Title: LazGitGui
9292 Program Filename: PATH/TO/LazGitGui executable
9393 Parameters: --logfile=PATH/TO/LazGitGui/ide.log $EdFile()
9494 Shortcut: CTRL+ALT+G
9595
9696(macOS)
9797
9898 Title: LazGitGui
9999 Program Filename: open
100100 Parameters: -a PATH/TO/LazGitGui.app --args --logfile=PATH/TO/LazGitGui/ide.log $EdFile()
101101 Shortcut: CMD + G
102102
103103The logfile parameter is optional.
104104
105105## Requirements
106106
107107LazGitGui only requires the git program, any version since 1.9.0 should work.
108108
109109The program tries automatically to find the git executable in the system (or user) path, once located, it gets stored in the LazGitGui config file. LazGitGui does this only once, the next time the program is started, the git executable path is read from the config file.
110110
111111In the case that LazGitGui was unable to locate the git program, or if one specific version of git is needed and because at the moment LazGitGui does not have a config screen, you have two options: Use the command line or edit the config file:
112112
113113**Editing the config file**
114114
115115The config file can be found in the following locations:
116116
117117 Windows: %LOCALAPPDATA%\appdata\lazgitgui\config\lazgitgui.cfg.json
118118 Linux/mac: $HOME/.config/lazgitgui\lazgitgui.cfg.json
119119
120120for example (this works under Linux):
121121
122122``` json
123123{
124124...
125125"lazgitgui.cfg" : { "git" : "/usr/bin/git" },
126126...
127127}
128128```
129129
130130**Using the command line**
131131
132132use the --git parameter to enter the git executable location:
133133
134134`--git=PATH/TO/GIT_EXECUTABLE`.
135135
136136## Modes
137137
138138By default, LazGitGUI will start full mode with the \[\[\|Status Screen\].
139139
140140If the -l or --log argument is supplied it will be launched in the [[Standalone Log]] mode where only the log window will be displayed.
141141
142142If the -f \<file\> or --filehistory=\<file\> argument is supplied, it will be run in [[File History]] mode which shows all the changes of the given file. In this case \<file\> have to be an existing tracked file within the working area, if\<file\> is not supplied it exists with an error.
143143
144144## Report issues
145145
146146Please file a report in the [bug tracker](https://gitlab.com/jramx/lazgitgui/-/issues)
147147
148148---
149149*From the Free Pascal wiki, page "LazGitGui", as it stood on 2023-08-24 after a change by Jesusrmx, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history