回到首页

输入关键词,多个关键词用空格分隔。

← 命令行与工程工具 · 系列目录

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 拷贝当前行

撤销/重做

  • u undo
  • <C-r> redo

打开/保存/退出/改变文件(Buffer)

  • :e <path/to/file> 打开一个文件
  • :w 存盘
  • :saveas <path/to/file> 另存为 <path/to/file>
  • :x, ZZ 或 :wq 保存并退出
  • :q! 退出不保存
  • :qa! 强行退出所有文件。
  • :bn 和 :bp 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

技巧

  1. 打开 Vim之后,可以用 :split filename或 :vsplit filename 或 :new filename 横向或纵向切割窗口,使用 Ctrl-w w 在窗口之间切换,使用 Ctrl-w h/j/k/l 按方向切换窗口。
  2. 用 Vim 打开一个文件,如果我们想实现所有文本行翻转,那么可以执行如下命令::g/^/m 0
  3. 在 Vim 中统计文本行数和当前光标的位置,可以使用 ctrl + g,统计字节数,可以使用 g + ctrl + g
  4. 对文本进行简单排序:用 shift v 选中多行文本,输入 :!sort,看看效果如何
  5. 如果你想把当前目录下(包括子文件夹)所有后缀为 java 的文件中的 apache 替换成 eclipse,那么依次执行如下命令: 在当前目录下执行:
vim
:args **/*.java
:args
:argdo %s/apache/eclipse/gce

最后一组命令先设置并检查参数列表,再逐项确认替换。检查修改后再保存;批量处理前确保已有备份或版本控制。普通模式下按 Esc 后再输入上面的操作。

相关文章