lazygit的学习与使用

lazygit Learning

lazygit 安装和使用以及多场景应用

1. Lazygit背景

Git的强大是所有开发者心中的利器

LazyGit 是一个使用 Go 语言编写的终端界面 Git 客户端,它以一种轻量级、高效且用户友好的方式提供了对 Git 仓库的全面管理.

它能为 git 命令提供一个终端图形界面,用户可以通过键盘快捷键或鼠标快速地完成各种 Git 操作,如提交、合并、推送、查看或切换分支等。

lazygit

2. Lazygit安装

官网提供了多种系统版本和安装方式,下面提供常见系统的个别安装,具体的请参考官方github

brew install lazygit
# Add the extras bucket
scoop bucket add extras

# Install lazygit
scoop install lazygit

使用gah/go进行安装

# gah
gah install lazygit

# go
go install github.com/jesseduffield/lazygit@latest

3. Lazygit基础使用

3.1 git 修改操作

假设你修改了文件,并进行Ctrl+S保存,lazygit会自动检测到你的修改,最好是多改几个文件,多修几行

lazygit

  • 在[2]中File-Worktrees-Submodules中的File中,可以看到当前修改的文件是01-基础教程,前面有M表示正在修改
Note
  1. 你可以直接使用Space空格键,直接相当于git add file.txt文件
  2. 你可以使用a,表示直接使用git add ./
  • 点击当前的文件,然后按Enter回车键,进入文件修改界面
  • 就是[0]状态栏中显示的样子(分为Ubstaged changes和Staged Changes)

@@ -a,b +c,d @@ 表示: 旧文件从第 a 行开始的 b 行,被新文件中从第 c 行开始的 d 行替换。

  • 每一个@@..@@都是一个hunk,光标停在某在hunk上
操作 按键
stage 当前 hunk space
discard 当前 hunk d
全文件 stage 回到文件列表 space

这就是lazygit推荐的最小修改单位

当然你可以使用VSCode,进行精细的编辑,但是终端就是讲究效率,同时忠于git

3.2 git commit操作

在上一步进行修改和git add之后,就是进行git commit操作了

选中文件之后,按c键,会看到commit要求的message提示

lazygit commit

  • 添加commitxx信息,然后按Enter回车键,进行commit操作 相当于git commit -m "message0"
  • description可以不写,但是最好写上,方便后续的回溯

如何使用git commit -amend

lazygit commit amend

Lazygit给了更方便的操作,在[04]工作栏中点击commit,然后会出现Amend commit提示,点击确定即可追加commit,commit的信息不变,但是commit的hash会发生改变

仅仅修改提交信息

如果你代码没问题,只是觉得刚才的 Commit Message 写得太烂(或者有错别字),请按以下步骤操作:

  • 按 4 进入 Commits 面板。(或者点击4的commit即可)
  • 选中最顶端的那条提交(也就是你刚刚完成的那条)。
  • r进入修改信息界面。修改之后按Enter确认即可

高级操作

  1. 只提交一部分修改
    • [02]选择文件
    • Enter进入git diff界面
    • 在某个块上保存,然后按Enter回车键,会自动git add,然后按c键,进行commit操作 这样就可以将一个文件拆分多个commit

同样的道理也可用于每一行的操作,主要指修改的部分

3. git branch

分支是git的核心,也是git的精髓

创建分支

在文件目录中进入bash,输入lazygit,切换到lazygit界面

在[03]的工作区域,点击Local branch,最下方会有提示

checkout; New Branch; delete; Rebase; Reset; Upsteam; Merge; Stash; Rename

  • n进入到创建分支的界面,输入分支的名称,确认Enter就可,默认直接切换到dev分支,等价于git switch -c dev或旧版的命令git checkout -b dev

{.lightbox fig-alt=“lazygit branch” fig-align=“center”

切换分支

而构建分支之后,如何切换? - 按Space(空格) 是最稳妥的切换和检出(checkout) - 按Enter现在就是展开commit,而不是切换了,需要注意 - 如果进入预览了,按Escq 即可回到左侧的分支选择列表

修改分支的名字,需要记住renamerebase非常容易混淆,快捷键R对应着rename;而常用的r对应着rebase

  • R等价于 git branch -m old-name new-name
  • r等价于 git rebase

按照上面的操作继续在[02]Flies,使用Space+c+Enter,进行提交,完成一次分支文件的修改

lazygit branch change

合并分支

在feature(dev改命)分支下,继续创建一个bugfix分支,然后修改文件,在创建的瞬间就能看到commit 9a26c6b将(HEAD–> bugfix,feature)表示HEAD当前的进度

  • bugfix分支修改之后,进行快速操作,就看到commit a110f7f(HEAD –> bugfix),这就是HEAD指向最前端的精髓
  • 点击每一个分支都展现出来当前分支的commit 线路

非常的直观查看commit历史线,出现冲突之后能快速的找到问题所在–lazygit的强大之处 :::lazy

  • 在[03]工作区域,点击Local branch,选择feature分支,然后按space切换分支到feature
  • M表示merge分支(下方都有提示,如果忘记了可以查看下方),会出现多种提示
    • Regular merge(fast - forward) 快进模式 m
    • Regular merge(no fast - forward) 普通模式 带有commit信息 n
    • Squash merge and leave uncommitted s
    • Squash merge and commit s

lazygit merge

Tip
feature:     A──B
bugfix:         └──C──D
  1. 快进模式 feature没有新的提交,只是落后于bugfix,只是把 feature 指针“快进”到 D

  2. 普通模式 feature有新的提交,需要把feature的提交合并到bugfix,所以需要一个新的commit,表示合并

  3. 压缩模式不提交 feature有新的提交,需要把feature的提交合并到bugfix,但是不需要新的commit,直接把feature的提交压缩到bugfix,等价于 git merge --squash feature,需要你手动commit

  4. 压缩并提交 C+D压缩成一个commit 等价于git commit --squash feature+git commit

删除分支

使用完分支之后,记得删除,否则分支会越来越多,越来越乱。

  • 选中需要删除的分支,按d,就会出现提示
  • 之前还需要确定删除本地分支,远程分支这些,lazygit全部呈现出来,给你选择
    • Delete local branch
    • Delete remote branch
    • Delete local and remote branch
  • 删除之后,按Enter确认即可