管理多个Git回购

gita的Python项目详细描述


pypi version构建状态codecoovlicensepypi-downloads中文

在这里,分支颜色区分了本地分支和远程分支的5种情况:

  • 白色:本地没有遥控器
  • 绿色:本地与远程相同
  • 红色:本地与远程已不同
  • 紫色:本地在远程之前(适合推送)
  • 黄色:本地在远程之后(适合合并)

前面选择紫色,后面选择黄色的动机是 蓝移红移, 使用绿色作为基准。

附加状态符号表示

  • +:分阶段更改
  • *:未分页的更改
  • :未跟踪的文件/文件夹

记帐子命令是

  • gita add<;repo path(s)>;:将repo添加到gita
  • gita rm<;回购名称>;:从gita中删除回购(不会从磁盘中删除文件)
  • gita ll:显示所有回购的状态
  • gita ls:显示所有回购的名称
  • gita ls<;repo name>;:显示一个repo的绝对路径
  • gita rename<;回购名称>;<;新名称>;:重命名回购
  • gita info:显示已使用和未使用的信息项
  • gita-v:显示gita版本

回购路径保存在$xdg_config_home/gita/repo_path中(很可能<代码>~/.config/gita/repo路径)。

委派子命令有两种格式

  • gita<;sub command>;[回购名称]:可选回购输入,无输入表示所有回购。
  • gita<;sub command>;<;repo name(s)>;:必需的repo name(s)输入

默认情况下,仅fetchpull接受可选输入。

如果指定了多个repo,git命令将异步运行, 除了需要用户输入的logdifftoolmergetool之外。

定制

自定义委派子命令可以在$xdg_config_home/gita/cmds.yml中定义 (很可能是~/.config/gita/cmds.yml)。 如果存在名称冲突,则它们会隐藏默认值。

默认委派子命令在 cmds.yml。 例如,gita stat<;repo name(s)>;注册为

stat:cmd:diff --stathelp:show edit statistics

它执行git diff--stat

如果委托的git命令是一个单词,则可以省略cmd标记。 有关示例,请参见push。 要禁用异步执行,请将disable_async标记设置为true。 有关示例,请参见Difftool。

如果希望自定义命令的行为类似于gita fetch,即应用 如果未指定任何内容,则向所有repo发出命令, 将allow_all选项设置为true。 例如,下面的代码片段创建了一个新命令 gita comaster[repo name(s)]带有可选的repo name输入。

comaster:cmd:checkout masterallow_all:truehelp:checkout the master branch

另一个自定义项是由gita ll显示的信息项。 已使用和未使用的信息项用gita info显示,您可以 创建$xdg_config_home/gita/info.yml以自定义它。例如, 默认信息项设置对应于

-branch-commit_msg

要创建自己的信息项,请定义一个名为extra\u info\u items的字典 在$xdg_config_home/gita/extra_repo_info.yml中。它应该将字符串映射到函数, 其中字符串是信息项名称,函数采用repo路径 作为输入。下面是一个简单的例子。

defget_delim(path:str)->str:return'|'extra_info_items={'delim':get_delim}

如果有效,您将在 gita info输出。要使用它们,请编辑$xdg_config_home/gita/extra_repo_info.yml

超人模式

超人模式委托任何git命令/别名。 用法:

gita super [repo-name(s)] <any-git-command-with-or-without-options>

这里repo name(s)是可选的,缺勤表示所有repo。 例如,

  • Gita超级签出主机将所有回购放在主机分支上
  • gita super frontend repo backend repo commit-am'实现新功能' 执行git commit-am'implement a new feature'用于frontend repobackend repo

要求

由于使用了 f字符串 以及异步模块。

在幕后,gita使用子流程来运行git命令/别名。 因此,安装的git版本可能很重要。 我的机器上有git1.8.3.12.17.2,和2.20.1,并且 他们的结果是一致的。

安装

要安装最新版本,请运行

pip3 install -U gita

如果首选开发模式, 下载源代码并运行

pip3 install -e <gita-source-folder>

无论哪种情况,在终端中调用gita都可能不起作用, 然后,您可以将以下行放入.bashrc文件中。

alias gita="python3 -m gita"

windows用户可能需要在终端中启用ansi转义序列,否则 分支颜色w不工作。 有关详细信息,请参阅此stackoverflow post

自动完成

<下载>.gita completion.bash 并将其输入.bashrc

贡献

要做出贡献,您可以

  • 报告/修复错误
  • 请求/实现功能
  • 启动/推荐此项目

要在本地运行测试,只需pytest。 更多实现细节见 design.md

你也可以在帕特伦向我捐款。 任何金额都非常感谢!

贡献者

诺萨瑟,MC0239,DGRANT,萨米布,贝斯特韦伯,TPOUT,帕布罗卡斯特拉诺

其他多回购工具

我还没有试过,但我听说了一些关于它们的好消息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
trycatch块中的java,是否“最终”覆盖异常块中的“返回”?   java在无限循环运行时,不明白为什么   导入javax时发生java错误。jnlp库   java Android:通过编程方式从微调器创建ArrayList   java Apache camel在处理所有文件后创建空ctl文件   运行外部文件Java   批处理文件Java关于运行时的混淆。memory()与Windows的物理内存使用历史记录图   java Play Framework 2/冗余对象验证   java如何纠正“注入目标不能声明为静态的”警告   java使用“this::content”或“::content”不按预期工作,包含来自同一thymeleaf模板的片段   无法使用Java和Apache POI写入Excel文件   java仅使用Twitter4j搜索带有图片/媒体的推文   java Hibernate惰性加载在@OneToOne映射中不起作用   java从外部存储器读取数据库文件   java从引用bean的映射中获取键值   java Springboot应用在实现MongoRepository时无法运行   java从2d数组返回多个匹配项   java文件>字节[]>字符串>字节[]>文件转换   JavaFX按钮释放事件