Git 与 Vim 工作笔记
约 4 分钟· 本文阅读 次更新于 2026-11-06
本页目录
Git 部分整理自 2018 年笔记,Vim 部分写于 2016 年。
Git
标签相关操作
# 显示所有 tag
git tag
# 切换到标签
git checkout v0.1.2
# 显示标签的版本信息
git show v0.1.2
# 删除标签
git tag -d v0.1.2
# 补打标签
git tag -a v0.1.1 9fbc3d0
# 推送到远程
git push origin --tags
# 输出标签信息
git describe --tags > BUILD_VERSION
检出标签通常会进入 detached HEAD 状态;若要在此基础上修改并保留提交,可另建分支。示例中的标签名和提交 ID 需要替换为仓库中实际存在的值。
检出仓库
一般来说,刚到公司,参与某个项目,第一件事情就是看代码,在开了项目的 Git 权限之后,我们要做的第一步就是把代码克隆到本地,命令为:
git clone username@host:/path/to/repository
本地仓库结构
本地仓库由 git 维护的三棵“树”组成。第一个是你的工作目录,它持有实际文件;第二个是暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

工作流程
在熟悉了代码之后,组长交给你一个任务。因为是多人共同开发,所以用分支来进行隔离。
- 创建分支
git checkout -b new_branch_name - 根据团队约定同步主分支;
git pull更新的是当前分支所跟踪的上游,不会自动把主分支合并进功能分支
因为我们都是武艺高强的程序员,所以很快就完成了开发和测试,需要提交代码
- 添加文件
git add path/to/file(先用git diff检查改动) - 提交到 HEAD
git commit -m "message" - 推送改动
git push origin new_branch_name - 然后可以在 Gitlab 网页中发起合并请求,等组长 review 通过后便可以进行代码合并
- 删除分支
git branch -d new_branch_name
意外处理
先用 git status 和 git diff 判断改动处于工作区、暂存区还是已经提交。git checkout -- filename 会用暂存区内容覆盖工作区文件,并不总是恢复到最后一次提交;未提交的修改可能因此丢失。
如果要撤销已经共享的提交,可以考虑 git revert 生成反向提交,并处理可能的冲突。旧稿中的强制重置和强制推送不作为通用回滚流程保留。
其他操作
git init用来创建新仓库,不过在公司里一般有内部的 Gitlab,很少需要用到git clone /path/to/repository克隆本地仓库,一般比较少用到
参考链接
Vim
虽然我还是喜欢图形化界面编辑器,但是有的时候登录到远程机器,不得不使用 vim 来编辑文件,这里记录下基本的操作。
更新历史
- 2016.03.24:完成初稿
i进入 Insert 模式x删除当前光标所在的字符:w存盘(后面可以跟文件名):q退出:wq存盘并退出dd删除当前行,并存入 Vim 寄存器p粘贴寄存器内容(不一定是系统剪贴板):help <command>要 :q 退出帮助
如何浏览帮助呢?请牢记如下秘籍:
- 移动: 使用光标键,或者用 h 向左,j 向下,k 向上,l 向右。
- 退出: 使用 :q
。 - 跳转到一个主题: 将光标置于标签 (例如 usr_01.txt) 上然后输入 CTRL-]。
- 跳回: 键入 CTRL-T。
- 翻页:键入 CTRL-F/B
插入模式
a在光标后插入o在当前行后插入一个新行O在当前行前插入一个新行cw替换从光标所在位置后到一个单词结尾的字符
移动光标
0数字零,到行头^到本行第一个不是blank字符的位置$到本行行尾g_到本行最后一个不是blank字符的位置。/pattern搜索 pattern 的字符串(按n到下一个)w b词移动
拷贝/粘贴
p在当前位置之后粘贴P在当前位置之前粘贴yy拷贝当前行
撤销/重做
uundo<C-r>redo
打开/保存/退出/改变文件(Buffer)
:e <path/to/file>打开一个文件:w存盘:saveas <path/to/file>另存为<path/to/file>:x,ZZ或:wq保存并退出:q!退出不保存:qa!强行退出所有文件。:bn和:bp你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。
技巧
- 打开 Vim之后,可以用
:split filename或:vsplit filename或:new filename横向或纵向切割窗口,使用Ctrl-w w在窗口之间切换,使用Ctrl-w h/j/k/l按方向切换窗口。 - 用 Vim 打开一个文件,如果我们想实现所有文本行翻转,那么可以执行如下命令:
:g/^/m 0 - 在 Vim 中统计文本行数和当前光标的位置,可以使用
ctrl + g,统计字节数,可以使用g + ctrl + g - 对文本进行简单排序:用
shift v选中多行文本,输入:!sort,看看效果如何 - 如果你想把当前目录下(包括子文件夹)所有后缀为 java 的文件中的 apache 替换成 eclipse,那么依次执行如下命令: 在当前目录下执行:
vim
:args **/*.java
:args
:argdo %s/apache/eclipse/gce
最后一组命令先设置并检查参数列表,再逐项确认替换。检查修改后再保存;批量处理前确保已有备份或版本控制。普通模式下按 Esc 后再输入上面的操作。
相关文章
- 从源代码到可复现修改:编译、Make 与 Git2026-11-06
- Linux 实战:归档、磁盘与文本命令2016-09-28
- Linux 服务器检查指南2016-09-28
- Mac CLI 指南2016-09-12
已恢复到上次阅读位置