通过单个终端命令在您自己的仓库中直观地模拟Git操作。
这将生成一个图像(默认)或视频可视化,描述Git命令的行为。
命令语法直接基于Git的命令行语法,因此使用git-sim尽可能地熟悉。
示例:$ git-sim merge <branch>
<br/><br/>
查看git-sim发布博客文章了解完整详情!
Git-Sim是免费开源软件(FOSS)。您的支持将帮助我全职致力于它(和其他Git项目)!
add
、branch
、checkout
、cherry-pick
、clean
、clone
、commit
、config
、fetch
、init
、log
、merge
、mv
、pull
、push
、rebase
、remote
、reset
、restore
、revert
、rm
、stash
、status
、switch
、tag
--animate
标志生成动画视频(.mp4)而不是静态图像(注意:性能显著下降,建议使用--low-quality
加快测试速度,准备生成演示质量视频时再移除)--color-by=author
选项注意:如果您更喜欢使用Docker安装git-sim,请跳过这里的步骤(1)和(2),直接跳到下面的Docker安装部分,然后再回到这里的步骤(3)。
为您的操作系统/环境安装Manim及其依赖项:
安装git-sim
:
$ pip3 install git-sim
注意:对于MacOS,建议不要使用系统Python安装Git-Sim,而是使用Homebrew安装一个Python版本来与Git-Sim一起使用。虚拟环境也应该可以。
$ cd path/to/git/repo
$ git-sim [全局选项] <子命令> [子命令选项]
可选:如果您没有现有的Git仓库来模拟命令,可以使用内置的git-dummy命令生成一个具有所需分支和提交数量的虚拟Git仓库,以便用git-sim模拟操作:
$ git-dummy --name="dummy-repo" --branches=3 --commits=10 $ cd dummy-repo $ git-sim [全局选项] <子命令> [子命令选项]
或者如果您想在一个命令中完成所有操作:
$ git-dummy --no-subdir --branches=3 --commits=10 && git-sim [全局选项] <子命令> [子命令选项]
模拟输出将创建为.jpg
文件。输出文件以执行的子命令和时间戳命名,默认存储在名为git-sim_media/
的子目录中。可以使用命令行标志--media-dir=path/to/output
自定义此子目录的位置。请注意,当使用--animate
全局标志时,渲染时间会更长,并将生成.mp4
视频输出文件。
为方便起见,可以为git-sim中可用的任何全局命令行选项设置环境变量。所有环境变量都以git_sim_
开头,后跟选项名称。
例如,可以像这样设置--media-dir
选项的环境变量:
$ export git_sim_media_dir=~/Desktop
同样,可以像这样设置--speed
选项:
$ export git_sim_speed=2
布尔标志可以这样设置:
$ export git_sim_light_mode=true
一般来说:
$ export git_sim_选项名称=选项值
在命令行上明确指定的选项优先于相应的环境变量值。
$ git-sim -h
$ git-sim <子命令> -h
基本用法类似于Git本身 - git-sim
接受一组熟悉的子命令,包括"add"、"branch"、"checkout"、"cherry-pick"、"clean"、"clone"、"commit"、"config"、"fetch"、"init"、"log"、"merge"、"mv"、"pull"、"push"、"rebase"、"remote"、"reset"、"restore"、"revert"、"rm"、"stash"、"status"、"switch"、"tag"以及相应的选项。
$ git-sim [全局选项] <子命令> [子命令选项]
[全局选项]
适用于整个git-sim
模拟本身,包括:
-n <数字>
: 显示每个分支头的提交数量。
--all
: 在日志输出中显示所有本地分支。
--animate
: 不输出静态图像,而是将Git命令行为以.mp4视频形式动画展示。
--color-by author
: 按参数(如作者)为提交着色。
--invert-branches
: 通过在适用情况下反转多个父级的顺序来反转分支的位置。
--hide-merged-branches
: 隐藏已合并分支的提交,即只显示主线提交。
--media-dir
: 存储模拟输出媒体文件的路径。
-d
: 禁用生成后自动打开图像/视频文件。在无GUI的控制台模式下避免错误时很有用。
--light-mode
: 使用浅色模式配色方案而非默认的深色模式。
--reverse, -r
: 以相反方向显示提交历史。
--img-format
: 图像文件的输出格式,如jpg
或png
。默认输出格式为jpg
。
--stdout
: 将原始图像数据写入标准输出,同时抑制所有其他程序输出。
--output-only-path
: 仅将生成的媒体文件路径输出到标准输出。对其他程序摄取有用。
--quiet, -q
: 除错误外抑制所有输出。
--highlight-commit-messages
: 使提交消息文本更大更粗,并隐藏提交ID。
--style
: 输出图像或动画视频的图形风格,如clean
(默认)或thick
。
仅用于动画的全局选项(与--animate
一起使用):
--video-format
: 视频文件的输出格式,如mp4
或webm
。默认输出格式为mp4
。
--speed=n
: 设置输出模拟的动画速度倍数,n
可以是整数或浮点数,默认为1.5。
--low-quality
: 以低质量渲染动画以加快创建时间,推荐用于非演示用途。
--show-intro
: 添加带有自定义logo和标题的开场序列。
--show-outro
: 添加带有自定义logo和文本的结束序列。
--title=标题
: 在动画 开始时显示的自定义标题。
--logo=logo.png
: 在动画开场/结束中使用的自定义logo路径。
--outro-top-text
: 结束时在logo上方显示的自定义文本。
--outro-bottom-text
: 结束时在logo下方显示的自定义文本。
--font
: 用于显示渲染文本的字体系列。
[子命令选项]
类似于特定于指定子命令的常规Git选项(完整列表见下文)。
以下是可以模拟的Git命令及其相应的选项/标志列表。
用法:git-sim add <文件1> <文件2> ... <文件n>
<文件>
作为已修改的工作目录文件,或未跟踪文件用法:git-sim branch <新分支名>
<新分支名>
作为要模拟创建的新分支名称用法:git-sim checkout [-b] <分支>
<分支>
检出到工作目录,即将HEAD
移动到指定的<分支>
-b
标志创建一个指定名称<分支>
的新分支并检出,假设该分支尚不存在用法:git-sim cherry-pick <提交>
<提交>
为要cherry-pick到活动分支的引用(分支名/标签)或提交ID$ git-sim cherry-pick <提交> -e "编辑后的提交消息"
用法:git-sim clean
-i
、-n
、-f
用法:git-sim clone <url>
<url>
(网址或文件系统路径)克隆远程仓库到当前目录的新文件夹用法:git-sim commit -m "提交消息"
-m
选项指定提交消息$ git-sim commit --amend -m "修改后的提交消息"
用法:git-sim config [--list] <section.option> <value>
--list
或-l
显示所有配置用法:git-sim fetch <远程> <分支>
<远程>
获取指定的<分支>
到本地仓库用法:git-sim init
.git/
目录及其内容用法:git-sim log [-n <数字>] [--all]
-n <数字>
设置要显示的每个分支头的提交数量--all
以在日志输出中显示所有本地分支用法:git-sim merge <分支> [-m "提交消息"] [--no-ff]
<branch>
作为要合并到当前分支的分支名-m
选项指定提交消息--no-ff
用法:git-sim mv <文件> <新文件>
<文件>
作为要更新名称/路径的文件<新文件>
作为文件的新名称/路径用法:git-sim pull [<远程仓库> <分支>]
<远程仓库>
拉取指定的 <分支>
到本地仓库<远程仓库>
和 <分支>
,则从默认远程仓库拉取当前分支用法:git-sim push [<远程仓库> <分支>]
<分支>
推送到指定的 <远程仓库>
并显示本地结果<远程仓库>
和 <分支>
,则将当前分支推送到默认远程仓库用法:git-sim rebase <新基础>
<新基础>
作为要将当前分支变基到的分支名用法:git-sim remote [add|rename|remove|get-url|set-url] [<远程仓库>] [<URL>]
git-sim remote
将列出所有现有远程仓库及其详细信息用法:git-sim reset <重置目标> [--mixed|--soft|--hard]
<重置目标>
为任何提交ID、分支名、标签或其他引用,以模拟从当前HEAD重置(默认:HEAD
)--mixed
,但可以使用 --soft
、--hard
或 --mixed
指定用法:git-sim restore <文件1> <文件2> ... <文件n>
<文件>
作为已修改的工作目录文件或已暂存文件用法:git-sim revert <要还原的提交>
<要还原的提交>
为任何提交ID、分支名、标签或其他引用以模拟还原<要还原的提交>
的更改的新提交用法:git-sim rm <文件1> <文件2> ... <文件n>
<文件>
作为被跟踪的文件用法:git-sim stash [push|pop|apply] <文件>
<文件>
作为已修改的工作目录文件或已暂存文件<文件>
,将包括所有可用文件用法:git-sim status
用法:git-sim switch [-c] <分支>
<分支>
,即将 HEAD
移动到指定的 <分支>
-c
标志创建一个指定名称 <分支>
的新分支并切换到它,前提是该分支不存在用法:git-sim tag <新标签名>
<新标签名>
作为要模拟创建的新标签的名称$ git-sim --animate reset HEAD^
$ git checkout main $ git-sim --animate merge dev
$ git checkout dev $ git-sim --animate rebase main
$ git checkout main $ git-sim --animate cherry-pick dev
模拟git log命令的输出:
$ cd path/to/git/repo $ git-sim log
模拟git status命令的输出:
$ git-sim status
模拟将文件添加到Git暂存区:
$ git-sim add filename.ext
模拟从Git暂存区恢复文件:
$ git-sim restore filename.ext
模拟基于当前暂存的更改创建新的提交:
$ git-sim commit -m "提交信息"
模拟将所有工作目录和暂存的更改存入贮藏:
$ git-sim stash
模拟创建新的Git分支:
$ git-sim branch new-branch-name
模拟创建新的Git标签:
$ git-sim tag new-tag-name
模拟将当前分支HEAD硬重置到上一次提交:
$ git-sim reset HEAD^ --hard
模拟撤销较早提交中的更改:
$ git-sim revert HEAD~7
模拟将一个分支合并到活动分支:
$ git-sim merge feature1
模拟将活动分支变基到新的基础上:
$ git-sim rebase main
模拟从另一个分支挑选提交到活动分支:
$ git-sim cherry-pick 0ae641
使用浅色模式以白色背景和黑色文字显示,而不是默认的黑色背景和白色文字:
$ git-sim --light-mode status
将模拟输出制作成.mp4视频文件动画:
$ git-sim --animate add filename.ext
添加带有自定义文本和标志的开场和结束画面(必须包含--animate
):
$ git-sim --animate --show-intro --show-outro --outro-top-text="我的Git仓库" --outro-bottom-text="感谢观看!" --logo=path/to/logo.png status
自定义输出图像/视频目录位置:
$ git-sim --media-dir=path/to/output status
可选地,设置环境变量git_sim_media_dir
来设置全局默认媒体目录,在未提供--media-dir
时使用。模拟输出的图像/视频将被放置在此位置,位于以相应仓库名称命名的子文件夹中。
$ export git_sim_media_dir=path/to/media/directory $ git-sim status
注意:--media-dir
优先于环境变量。如果你设置了环境变量并仍然提供了参数,你会在--media-dir
提供的路径中找到媒体文件。
生成低质量的输出视频以加快渲染时间(对于重复测试很有用,必须包含--animate
):
$ git-sim --animate --low-quality status
有关安装manim和其他依赖项的详细信息,请参阅快速入门部分。然后运行:
$ pip3 install git-sim
$ git clone https://github.com/initialcommit-com/git-sim.git
git-sim
文件夹并构建Docker镜像:$ docker build -t git-sim .
docker run --rm -v %cd%:/usr/src/git-sim git-sim [全局选项] <子命令> [子命令选项]
docker run --rm -v $(pwd):/usr/src/git-sim git-sim [全局选项] <子命令> [子命令选项]
可选:在MacOS / Linux / 或Windows的GitBash中,为长docker命令创建一个别名,这样你就可以像正常的git-sim
命令一样运行它。为此,将以下行添加到你的.bashrc
或等效文件中,然后重启终端:
git-sim() { docker run --rm -v $(pwd):/usr/src/git-sim git-sim "$@"; }
这将使你能够像上面描述的那样运行git-sim子命令。
在git-sim项目页面上了解更多关于这个工具的信息。
Jacob Stopak - 代表Initial Commit
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
帮助AI理解电脑屏幕 纯视觉GUI元素的自动化解析方案
开源工具通过计算机视觉技术实现图形界面元素的智能识别与结构化处理,支持自动化测试脚本生成和辅助功能开发。项目采用模块化设计,提供API接口与多种输出格式,适用于跨平台应用场景。核心算法优化了元素定位精度,在动态界面和复杂布局场景下保持稳定解析能力。
埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型
Grok3 是由埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型,常被马斯克称为“地球上最聪明的 AI”。它不仅是在前代产品 Grok 1 和 Grok 2 基础上的一次飞跃,还在多个关键技术上实现了创新突破。
腾讯自研的混元大模型AI助手
腾讯元宝是腾讯基于自研的混元大模型推出的一款多功能AI应用,旨在通过人工智能技术提升用户在写作、绘画、翻译、编程、搜索、阅读总结等多个领域的工作与生活效率。
Windsurf Editor推出第三次重大更新Wave 3
新增模型上下文协议支持与智能编辑功能。本次更新包含五项核心改进:支持接入MCP协议扩展工具生态,Tab键智能跳转提升编码效率,Turbo模式实现自动化终端操作,图片拖拽功能优化多模态交互,以及面向付费用户的个性化图标定制。系统同步集成DeepSeek、Gemini等新模型,并通过信用点数机制实现差异化的资源调配。
增强编程效率的AI代码编辑器
Cursor作为AI驱动的代码编辑工具,助力开发者效率大幅度提升。该工具简化了扩展、主题和键位配置的导 入,可靠的隐私保护措施保证代码安全,深受全球开发者信赖。此外,Cursor持续推出更新,不断优化功能和用户体验。
全面超越基准的 AI Agent助手
Manus 是一款通用人工智能代理平台,能够将您的创意和想法迅速转化为实际成果。无论是定制旅行规划、深入的数据分析,还是教育支持与商业决策,Manus 都能高效整合信息,提供精准解决方案 。它以直观的交互体验和领先的技术,为用户开启了一个智慧驱动、轻松高效的新时代,让每个灵感都能得到完美落地。
飞书官方推出的AI知识库 上传word pdf即可部署AI私有知识库
基于DeepSeek R1大模型构建的知识管理系统,支持PDF、Word、PPT等常见文档格式解析,实现云端与本地数据的双向同步。系统具备实时网络检索能力,可自动关联外部信息源,通过语义理解技术处理结构化与非结构化数据。免费版本提供基础知识库搭建功能,适用于企业文档管理和个人学习资料整理场景。
大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。
DeepSeek开源的专家并行通信优化框架
DeepEP是一个专为大规模分布式计算设计的通信库,重点解决专家并行模式中的通信瓶颈问题。其核心架构采用分层拓扑感知技术,能够自动识别节点间物理连接关系,优化数据传输路径。通过实现动态路由选择与负载均衡机制,系统在千卡级计算集群中维持稳定的低延迟特性,同时兼容主流深度学习框架的通信接口。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号