git - 是否可以在不更改分支的情况下在另一个分支上进行 Git 提交?

标签 git

我正在处理分支feature-a,我需要在源代码的不相关部分对feature-b进行更改。我忘记了(或者太懒了)制作辅助工作树,并编辑了一些应该在 feature-b 分支中更改的文件。

我现在可以创建一个工作树并rsync我对工作树的未提交更改。或者我可以在当前分支上进行更改,然后使用 git-cherry-pick/git-rebase 将它们放到正确的位置。

但实际上我只是希望能够在 feature-b 上进行提交来反射(reflect)我的编辑,而无需实际更改分支、切换主工作树的内容等。

这可以通过 Git CLI 实现吗?

最佳答案

是的,这是可能的。但您必须使用 git 低级命令(又名 git plumbing )。基本任务是:

  • 为更改的文件创建新对象 (git hash-object -w)
  • 为包含已更改文件的目录创建新树 (git write-tree)
  • 创建一个新的提交对象,引用根目录的树和相应的父提交 (git commit-tree)
  • 将分支移至新提交
  • 推分支

请注意,对于最后两个步骤,您可以使用高级 git 命令,前三个步骤比较棘手。

chapter 10.2中的示例几乎可以满足您的要求。

关于git - 是否可以在不更改分支的情况下在另一个分支上进行 Git 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70571696/

相关文章:

macos - .gitignore 不适用于子目录中的文件

ios - Xcode 7 无法与源代码管理正常工作

linux - git:在任何客户端推送后自动在服务器上运行 bash 脚本

git - 显示未在 git 中暂存提交的更改

linux - 找到新安装的应用程序的可执行文件 "Beyond Compare"

Git 索引和提交非常慢

git - 颜色 merge 在 Git 日志输出中提交不同?

Git 没有根据 .ssh/config 选择正确的 key

git - 如何保存 "repeating" rebase 步骤?

git - 如何让 git add -p 接受击键而不等我按 Enter 键?