├── README.md ├── case ├── conflict │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ └── solve_conflict.md ├── hunk │ ├── 01.png │ ├── 02.png │ ├── 03.png │ └── hunk.md └── introduce │ ├── 01.png │ └── introduce.md ├── change_log.md ├── content.md ├── tutorials ├── command_line.md ├── hook.md ├── osx_command_line.md ├── res │ └── hook-preferences.png └── shortcut_key.md └── video ├── content.md └── readme.md /README.md: -------------------------------------------------------------------------------- 1 | # `Sublime Merge`教程 2 | 3 | [![SublimeMerge][sublime-merge-image]](sublime-merge-link) 4 | 5 | 6 | #### 相关链接 7 | - [`Sublime Merger`中文教程](https://github.com/sublime-china/sublime-merge-tutorials) 8 | - [`Sublime Merger`官网](https://www.sublimemerge.com/) 9 | - [`Sublime Merger`官方文档](https://www.sublimemerge.com/docs/) 10 | 11 | 12 | #### 教程 13 | - [简介](./case/introduce/introduce.md) 14 | - [快捷键](./tutorials/shortcut_key.md) 15 | - [Mac命令行](./tutorials/osx_command_line.md) 16 | - [命令行(官方文档翻译)](./tutorials/command_line.md) 17 | - [解决冲突](./case/conflict/solve_conflict.md) 18 | - [Sublime Merge中的Hunk是什么意思](./case/hunk/hunk.md) 19 | - [Sublime Merge中使用钩子(hook)](./tutorials/hook.md) 20 | 21 | 22 | ### 更新日志 23 | - [Change Log](./change_log.md) 24 | 25 | 26 | [sublime-merge-image]: https://img.shields.io/badge/Sublime-Merge-orange.svg 27 | [sublime-merge-link]: https://www.sublimemerge.com/ 28 | -------------------------------------------------------------------------------- /case/conflict/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/01.png -------------------------------------------------------------------------------- /case/conflict/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/02.png -------------------------------------------------------------------------------- /case/conflict/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/03.png -------------------------------------------------------------------------------- /case/conflict/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/04.png -------------------------------------------------------------------------------- /case/conflict/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/05.png -------------------------------------------------------------------------------- /case/conflict/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/06.png -------------------------------------------------------------------------------- /case/conflict/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/07.png -------------------------------------------------------------------------------- /case/conflict/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/conflict/08.png -------------------------------------------------------------------------------- /case/conflict/solve_conflict.md: -------------------------------------------------------------------------------- 1 | # [Sublime Merge] 案例: 解决冲突 2 | 3 | - [模拟一个场景](#0) 4 | - [初始化一个本地仓库](#1) 5 | - [Sublime Merge的第一次提交](#2) 6 | - [创建分支](#3) 7 | - [切换分支](#4) 8 | - [合并分支](#5) 9 | - [解决冲突](#6) 10 | 11 | 12 | ### 0. 模拟一个场景 13 | 比如, 作者和`Linus`大神是一个项目组的:) 14 | 工作的流程是这样, 我们各自在自己的分支开发, 然后合并到dev分支上去. 15 | 某一天, 2人同时对一个文件进行了编辑. 大神先合并到dev分支, 然后我也完成了我的工作, 开始合并. 16 | 结果发现冲突了, 这个时候就需要解决一下代码的冲突, 使得合并成功. 17 | 18 | 模拟一下这个场景! 19 | 20 | 21 | ### 1. 初始化一个本地仓库 22 | 23 | ```zsh 24 | mkdir GitTest 25 | cd GitTest 26 | git init 27 | touch main.py 28 | subl main.py 29 | ``` 30 | 31 | `main.py`如下: 32 | 33 | ```Python 34 | if __name__ == '__main__': 35 | pass 36 | ``` 37 | 38 | 39 | ### 2. Sublime Merge的第一次提交 40 | 41 | ![](./01.png) 42 | 43 | 1. `Stage`: 将main.py这个文件加到stage(暂存区)中. 44 | 2. `Stage All` 将所有文件加到stage中. 需要点击2次才能确认. 45 | 3. 快捷键`ctrl + 1`到`Commit Message`填写提交信息. 46 | 4. 提交. 将stage提交到本地仓库. 47 | 5. 因为main.py是新建的文件, 所以可以用`Delete`删除文件(慎重!!!) 48 | 49 | 50 | ### 3. 创建分支 51 | > 快捷键`Ctrl + Shift + B` 52 | 53 | 创建2个分支: `Floyda`和`Linus` 54 | 55 | ![](./02.png) 56 | 57 | 或者右键选择`Create Branch at Commit` 58 | 59 | 60 | ### 4. 切换分支 61 | > 快捷键`Ctrl + B` 62 | 63 | 分别切换到`Floyda`和`Linus`分支, 修改`main.py` 64 | 65 | Branch Linus: 66 | 67 | ```Python 68 | def hello_linus(): 69 | print('Hello Linus') 70 | 71 | if __name__ == '__main__': 72 | hello_linus() 73 | ``` 74 | 75 | Branch Floyda: 76 | 77 | ```Python 78 | def hello_floyda(): 79 | print('Hello Floyda') 80 | 81 | if __name__ == '__main__': 82 | hello_floyda() 83 | ``` 84 | 85 | 按上面的步骤添加提交代码, 结果如下图: 86 | 87 | ![](03.png) 88 | 89 | 1. 3个分支可以用鼠标双击切换. 90 | 2. 3个分支脉络可见, 非常清晰. 91 | 92 | 93 | 94 | ### 5. 合并分支 95 | 96 | 切换回`master`分支, 快捷键`Ctrl + P`打开命令行界面, 输入`Merge Branch`. 97 | 或者在侧边栏的分支上右键选择`Merger XXX into master` 98 | 99 | ![](04.png) 100 | 101 | 102 | 合并第一个的时候没有问题, 合并第二个分支的时候, 就会出现冲突了. 103 | 104 | 105 | ### 6. 解决冲突 106 | 107 | ![](05.png) 108 | 109 | 点击`Resolve`解决冲突 110 | 111 | ![](06.png) 112 | 113 | 可以点击这些黑色的箭头来选择合并的代码块, 快捷键是`Ctrl + Shift + [`和`Ctrl + Shift + ]` 114 | 也可以`Ctrl + Enter`打开Sublime, 在编辑器中敲键盘修改. 115 | 116 | ![](07.png) 117 | 118 | 解决好冲突之后, 记得保存. 119 | 120 | ![](08.png) 121 | 122 | 然后继续上面的步骤: `Stage`->`Commit` 123 | -------------------------------------------------------------------------------- /case/hunk/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/hunk/01.png -------------------------------------------------------------------------------- /case/hunk/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/hunk/02.png -------------------------------------------------------------------------------- /case/hunk/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/hunk/03.png -------------------------------------------------------------------------------- /case/hunk/hunk.md: -------------------------------------------------------------------------------- 1 | # Sublime Merge中的Hunk是什么意思 2 | 3 | 4 | ### Sublime Merge中的`Hunk`是什么意思 5 | ![](./01.png) 6 | 7 | 当我们在提交代码的时候: 8 | - `stage`是把整个文件的修改放到暂存区中. 9 | - `stage hunk`是把文件中某一部分代码块的修改放到暂存区中. 10 | 11 | **`hunk`的意思就是`有修改的代码块`** 12 | **So, 慎重起见, 我们在提交代码的时候, 以`hunk`为单位, 逐一添加.** 13 | 14 | 15 | ### 在命令行中用`git diff`查看 16 | 17 | ![](./02.png) 18 | 19 | > 可见`Sublime Merge`十分清晰明了且美观的把diff的结果展示给了我们. 20 | 21 | 22 | ### 在Git源码中查看 23 | 24 | > ./git/apply.c 25 | 26 | ![./git/apply.c](./03.png) 27 | 28 | ```C 29 | /* 30 | * This represents one "hunk" from a patch, starting with 31 | * "@@ -oldpos,oldlines +newpos,newlines @@" marker. The 32 | * patch text is pointed at by patch, and its byte length 33 | * is stored in size. leading and trailing are the number 34 | * of context lines. 35 | */ 36 | struct fragment { 37 | unsigned long leading, trailing; 38 | unsigned long oldpos, oldlines; 39 | unsigned long newpos, newlines; 40 | /* 41 | * 'patch' is usually borrowed from buf in apply_patch(), 42 | * but some codepaths store an allocated buffer. 43 | */ 44 | const char *patch; 45 | unsigned free_patch:1, 46 | rejected:1; 47 | int size; 48 | int linenr; 49 | struct fragment *next; 50 | }; 51 | ``` 52 | 53 | -------------------------------------------------------------------------------- /case/introduce/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/case/introduce/01.png -------------------------------------------------------------------------------- /case/introduce/introduce.md: -------------------------------------------------------------------------------- 1 | # Sublime Merge, 像Sublime那样使用Git 2 | 3 | 4 | ![](./01.png) 5 | 6 | ### 什么是Sublime Merge 7 | 8 | Sublime Merge是Sublime Text的姐妹产品. 9 | 都来自于Sublime HQ 家族. 10 | 虽然名字带Merge, 感觉是一款合并工具. 11 | **但其本质是一个Git的客户端.** 12 | 13 | - Sublime Merge坚持了Sublime Text一贯的作风: 14 | - 更轻量 15 | - 更快捷 16 | - 更美观 17 | - 更注重细节 18 | 19 | - 价钱也一如既往的贵, 99刀. 当然, 不购买也能正常的使用. 20 | - 偶尔会弹出一个提示框 21 | - 不能使用Merge Dark的主题 22 | 23 | 24 | ### 特点 25 | - 提交更快 26 | - 复审更好 27 | - 搜索更强 28 | - 合并更爽 29 | 30 | 31 | ### 功能特性 32 | - 集成合并工具 33 | - 强大的性能 34 | - 强大的Diff功能 35 | - 命令行面板和快捷键 36 | - 可扩展性 37 | - 集成命令行 38 | - 强大的搜索功能 39 | - 文件和代码块历史功能 40 | - 提供日间和夜间主题 41 | - 语法高亮 42 | - 真正的 Git:Sublime Merge 使用与 Git 相同的术语,并且不使用 Git 之外的任何描述 43 | 44 | > from: https://www.sublimetext.com/blog/articles/sublime-merge 45 | > It combines the UI engine of Sublime Text, with a from-scratch implementation of Git. The result is, to us at least, something pretty special. 46 | > **它结合了Sublime Text的UI引擎和Git的从头实现. 结果, 至少对我们来说, 是非常漂亮的特别的.** 47 | 48 | -------------------------------------------------------------------------------- /change_log.md: -------------------------------------------------------------------------------- 1 | # 更新日志 2 | 3 | ### BUILD 1107 4 | > 12 March 2019 5 | 6 | - 侧边栏的'Contents'部分, 现在可以在`showing changed`和`all files`之间切换. 7 | > 空格键或者鼠标多点一次当前文件的标题. 8 | - `Sublime Merge`现在可以当成一个独立的合并工具, 通过命令行的`smerge --help`查看详情. 9 | - Merge tool: 改进原始文件和合并文件之间切换UI显示效果. 10 | - 添加`Navigate/Go to Parent`菜单项. 11 | > 如果分支很多, 合并线条很复杂的情况下, 这个功能可以很方便的找到当前分支当前commit的上一个commit. 12 | - 改进`clone`对话框. 13 | - 各种语法高亮的改进. 14 | - Merge tool now indicates which lines have been modified in the merged file 15 | - Merge tool: swap_line_up, swap_line_down and duplicate_line commands are now supported 16 | - 解决`git flow`命令显示高度不一致的bug 17 | - Mac: 对苹果系统`native tabs`的完全支持. 18 | - Mac: 确保菜单在缩放时的显示. 19 | - Mac: 错误信息对话框不能通过Esc键关闭. 20 | - Linux: Color glyphs are now drawn properly on light backgrounds 21 | - Windows: Fix DirectWrite handling of fonts with lineGap > 0 22 | 23 | 24 | ### Build 1084 25 | > 29 October 2018 26 | 27 | - 搜索: 添加`contents:`操作符, 以找到提交信息或删除文本. 28 | - 现在可以忽略差异中的空白更改(可从上下文菜单中获得). 29 | - 编辑提交: 增加`Squash Selected Commits`. 30 | - 支持`core.worktree`. 31 | - 重新打开仓库时, 恢复当前的窗口状态. 32 | - 搜索: 当查询信息包含`path:`, `file:`, 或者`contents:`, 指定的`min-parents: 0`, 合并信息会自动的排除在外. 33 | - 位置栏: 如果标签的名称中有斜杠, 标签会被分组到文件夹中. 34 | - 调整提交视图的效果. 35 | - 添加新的偏好, `time_format`. 36 | - 偏好: 现在显示默认值, 而不是`null`. 37 | - 偏好: 接受不带引号的字符串.(这个比较屌orz... By Floyda) 38 | - 优化了因仓库文件系统而造成的网络问题. 39 | - 导航到提交现在可以像预期的那样进行隐藏提交 40 | - 解决了上下文拆分器超过hunk头部的Bug. 41 | - 解决了启动时, `expand_merge_commits_by_default`不能正常使用的Bug. 42 | - 解决了粗体字文本在侧边栏有时不能正常显示的Bug. 43 | - 解决了一个1079版本的回归问题. 44 | - Mac: 添加`gpu_window_buffer`设置, 以禁用OpenGL的使用. 45 | -------------------------------------------------------------------------------- /content.md: -------------------------------------------------------------------------------- 1 | # Git Content 2 | > https://git-scm.com/docs 3 | 4 | ## Setup and Config 5 | - git 6 | - config 7 | - help 8 | 9 | ## Getting and Creating Projects 10 | - init 11 | - clone 12 | 13 | ## Basic Snapshotting 14 | - add 15 | - status 16 | - diff 17 | - commit 18 | - reset 19 | - rm 20 | - mv 21 | 22 | ## Branching and Merging 23 | - branch 24 | - checkout 25 | - merge 26 | - mergetool 27 | - log 28 | - stash 29 | - tag 30 | - worktree 31 | 32 | ## Sharing and Updating Projects 33 | - fetch 34 | - pull 35 | - push 36 | - remote 37 | - submodule 38 | 39 | ## Inspection and Comparison 40 | - show 41 | - log 42 | - diff 43 | - shortlog 44 | - describe 45 | 46 | ## Patching 47 | - apply 48 | - cherry-pick 49 | - diff 50 | - rebase 51 | - revert 52 | 53 | ## Debugging 54 | - bisect 55 | - blame 56 | - grep -------------------------------------------------------------------------------- /tutorials/command_line.md: -------------------------------------------------------------------------------- 1 | # 命令行 2 | > [原文地址](https://www.sublimemerge.com/docs/command_line) 3 | 4 | 5 | `Sublime Merge`包含一个命令行工具`smerge`, 用于在命令行上处理仓库(repo), 这个工具能打开仓库, 搜索, 合并文件. 6 | 7 | 8 | ## 设置(Setup) 9 | 10 | - Windows 11 | 添加`C:\Program Files\Sublime Merge`到环境变量的`%PATH%`中 12 | 13 | - Mac 14 | `ln -s "/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge" ~/bin/smerge` 15 | 16 | - Linux 17 | `ln -s /opt/sublime_merge/sublime_merge ~/bin/smerge` 18 | 19 | ## 使用(Usage) 20 | 21 | Run `smerge --help`: 22 | 23 | ``` 24 | Usage: smerge path Open the given repository 25 | or: smerge search query Search for commits in the current repository 26 | or: smerge blame file [line] Blame the given file in the current repository 27 | or: smerge log file Show the file history in the current repository 28 | or: smerge mergetool Opens the merge tool for the given files 29 | [--no-wait] [base] left right [-o merged] 30 | 31 | -n or --new-window: Open a new window 32 | -b or --background: Don't activate the application 33 | -h or --help: Show help (this message) and exit 34 | -v or --version: Show version and exit 35 | ``` 36 | 37 | ## Git Merge Tool Setup 38 | 39 | 合并工具可用于从命令行处理Git仓库中的合并冲突. 40 | 使用上面的说明配置smerge之后,从仓库目录运行以下操作: 41 | 42 | ``` 43 | git config mergetool.smerge.cmd 'smerge mergetool "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"' 44 | git config mergetool.smerge.trustExitCode true 45 | git config merge.tool smerge 46 | ``` 47 | 48 | ## Git Merge Tool Usage 49 | 50 | 调用合并工具, 运行: 51 | ``` 52 | git mergetool 53 | ``` 54 | 55 | ## mac下可以直接用brew安装(from [issues](https://github.com/sublime-china/sublime-merge-tutorials/issues/1)) 56 | 57 | ``` 58 | brew cask install sublime-merge 59 | ``` 60 | 自动创建命令行smerge的软链接 61 | -------------------------------------------------------------------------------- /tutorials/hook.md: -------------------------------------------------------------------------------- 1 | # Sublime Merge中使用钩子(hook) 2 | 3 | 4 | ## git hook 5 | > 参考文章: 6 | > - [Git 钩子](https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90) 7 | > - [钩子:自定义你的工作流](https://github.com/geeeeeeeeek/git-recipes/wiki/5.4-Git-%E9%92%A9%E5%AD%90%EF%BC%9A%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BD%A0%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81) 8 | 9 | 10 | ## Sublime Merge中使用钩子(hook) 11 | > 参考文章: 12 | > - [Commit hook not working on Windows](https://forum.sublimetext.com/t/commit-hook-not-working-on-windows/39552) 13 | 14 | 15 | ## 在Sublime Merge中使用hook失效 16 | ![hook-preferences](res/hook-preferences.png) 17 | 18 | 如果hook中要执行一段很复杂的脚本, 有可能是失效的. 19 | 我的解决方案是不用默认的`system`的git方案, 而是选用SM自带的. 20 | 选择路径为`C:\Program Files\Sublime Merge\Git\cmd\git.exe` 21 | -------------------------------------------------------------------------------- /tutorials/osx_command_line.md: -------------------------------------------------------------------------------- 1 | # [Sublime Merge] Mac命令行 2 | 3 | > 在Mac系统中, Sublime Merge有一个命令行工具. 方便我们在终端模式中打开Git本地仓库. 4 | 5 | ## 设置 6 | 7 | `ln -s "/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge" ~/bin/sm` 8 | 9 | ## 使用 10 | 11 | Run `sm -h` 12 | 13 | ```shell 14 | Sublime Merge build 1075 15 | 16 | Usage: sm path Open the given repository 17 | or: sm search query Search for commits in the current repository 18 | or: sm blame file [line] Blame the given file in the current repository 19 | or: sm log file Show the file history in the current repository 20 | 21 | -n or --new-window: Open a new window 22 | -b or --background: Don't activate the application 23 | -h or --help: Show help (this message) and exit 24 | -v or --version: Show version and exit 25 | ``` 26 | -------------------------------------------------------------------------------- /tutorials/res/hook-preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sublime-china/sublime-merge-tutorials/3efa846d722f38b68ce29a8580b2bf0c3a2e4491/tutorials/res/hook-preferences.png -------------------------------------------------------------------------------- /tutorials/shortcut_key.md: -------------------------------------------------------------------------------- 1 | # [Sublime Merge] 快捷键 2 | 3 | | 快捷键 | 说明 | 4 | | - | - | 5 | | ctrl+o | 打开仓库 | 6 | | ctrl+n | 新建仓库 | 7 | | ctrl+b | 切换分支 | 8 | | ctrl+f | 查找 | 9 | | ctrl+r / F5 | 刷新 | 10 | | ctrl+k, ctrl+b | 打开侧边栏 | 11 | | ctrl+alt+up | git push | 12 | | ctrl+alt+down | git pull | 13 | | ctrl+s | 储藏 | 14 | | ctrl+shift+s | 移除储藏 | 15 | | ctrl+p | 显示命令面板 | 16 | | ctrl+shift+p | 显示命令面板 | 17 | | ctrl+shift+o | 切换仓库 | 18 | | ctrl+shift+b | 创建分支 | 19 | | ctrl+shift+a | 把所有修改加到stage缓冲区 | 20 | | ctrl+shift+r | 把所有提交移除stage缓冲区 | 21 | | ctrl+shift+[ | 使用左边的代码块 | 22 | | ctrl+shift+] | 使用右边的代码块 | 23 | | ctrl+n(merge模式) | 后一个冲突 | 24 | | ctrl+shift+n(merge模式) | 前一个冲突 | 25 | | alt+left | 导航后退 | 26 | | alt+right | 导航前进 | 27 | | backspace | 丢弃hunk中的修改 | 28 | | shift+backspace | 丢弃文件中的修改 | 29 | | shift+enter | 将文件丢弃或者加入到stage中 | 30 | | enter | 将hunk丢弃或者加入到stage中 | 31 | | ctrl+0 | 跳转到HEAD | 32 | | ctrl+1 | 跳转到提交信息输入框中 | 33 | | ctrl+0(merge模式) | 合并前后的切换 | 34 | | ctrl+1(merge模式) | 跳转到左边 | 35 | | ctrl+2(merge模式) | 跳转到中间 | 36 | | ctrl+3(merge模式) | 跳转到右边 | 37 | | ctrl+enter(diff模式) | 用编辑器打开 | 38 | | ctrl+enter(blame模式) | 用编辑器打开 | 39 | | ctrl+enter(can_commit) | commit | 40 | | ctrl+enter(read_only) | edit_commit | 41 | | ctrl+enter(is_editing_commit) | save_commit_message | 42 | -------------------------------------------------------------------------------- /video/content.md: -------------------------------------------------------------------------------- 1 | ## Setup and Config 2 | - git 3 | - config 4 | - help 5 | 6 | ## Getting and Creating Projects 7 | - init 8 | - clone 9 | 10 | ## Basic Snapshotting 11 | - add 12 | - status 13 | - diff 14 | - commit 15 | - reset 16 | - rm 17 | - mv 18 | 19 | ## Branching and Merging 20 | - branch 21 | - checkout 22 | - merge 23 | - mergetool 24 | - log 25 | - stash 26 | - tag 27 | - worktree 28 | 29 | ## Sharing and Updating Projects 30 | - fetch 31 | - pull 32 | - push 33 | - remote 34 | - submodule 35 | 36 | ## Inspection and Comparison 37 | - show 38 | - log 39 | - diff 40 | - shortlog 41 | - describe 42 | -------------------------------------------------------------------------------- /video/readme.md: -------------------------------------------------------------------------------- 1 | # Sublime Merge 视频教程 2 | 3 | ## Sublime Merge 4 | 5 | 6 | ## 版本控制 --------------------------------------------------------------------------------