首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在当前分支中有未提交的更改时,如何以编程方式编辑另一个分支中的文件?

即使在当前分支中有未提交的更改时,如何以编程方式编辑另一个分支中的文件?
EN

Stack Overflow用户
提问于 2020-01-15 22:30:58
回答 3查看 95关注 0票数 0

作为个人练习,我正在编写一个命令行和基于git的问题跟踪器,其中问题保存在另一个git分支中(例如,project-issues)。假设我目前正在master分支工作。使用我的问题跟踪器,运行issue-tracker --add-issue "Fix all bugs"将需要修改project-issues分支的内容。因此,问题是:以编程方式修改另一个分支的内容的推荐方法是什么(即使当前分支中有未实现的更改)?

我想过的可能的方法:

  • 程序在用户正在处理的分支上运行git stash,切换到project-issues分支,对project-issues分支进行所需的提交,切换回用户最初所在的分支,然后运行git stash apply
  • 该程序使用git-workdir为project-issues分支创建一个临时工作目录,在临时工作目录中进行所需的提交,然后删除临时工作目录。

这个问题有更简单的解决办法吗?

这个程序是用Python编写的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-15 22:39:51

您可以使用低级管道命令创建blobs、树和提交。例如:

  1. hash-object将创建一个blob (从文件或stdin)
  2. 创建带有blob的树的mktree
  3. commit-tree来创建与树的提交
  4. 将引用移动到新提交的update-ref

有一个简单的基本示例这里

另一个想法是使用git notes,或者至少使用一个ref (或孤立的分支),而不是普通的分支,以保持问题信息独立于项目文件和分支。

票数 1
EN

Stack Overflow用户

发布于 2020-01-15 23:00:30

我建议你避开git stash。里面到处都是锋利的箱子。

如果你有git worktree add,那就用它。它从第一次出现(Git 2.5)一直到Git 2.15,这意味着您应该在两个星期内完成在添加的工作树中所做的任何工作,然后删除添加的工作树,但是如果您在一个程序中完成这个任务,您将在几分钟或最坏的时间内完成,而不是几个星期。

菅直人回答中的低级别方法将是最有效的(到目前为止),但需要了解Git的内部细节,至少在某种程度上是这样。

票数 1
EN

Stack Overflow用户

发布于 2020-01-15 22:46:12

如果您使用带有web挂钩的Jenkinsfile管道,您可以更好地控制要执行的自定义任务,在任何情况下,如果您切换到另一个分支而不执行,则必须将其存储起来。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59760485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档