【发布时间】:2013-04-02 23:26:13
【问题描述】:
我最近遇到了一个问题,我需要选择一些文件以使用 git 推送到远程分支。 我的具体用例是在每次提交中只创建/修改一个文件,我需要以编程方式推送选定的文件(处于最新状态)。我做了一些研究,发现我需要做的 2 个技巧:
- 我可以使用cherry-pick 将某些提交挑选到一个新分支中,然后将该分支合并到远程主分支中。
- 我可以使用 rebase -i 重新排序提交,我假设我可以重新排序,以便与这些选定文件相关的提交都在前面,我可以推送该列表中的最后一个提交。
对于cherry-pick来说,这有点令人困惑。我可以创建一个没有所有脏提交的新分支,并将文件提交选择到该分支中。但是,如果该文件已经存在于分支中,它总是会引发我必须手动修复的冲突,并不理想。
对于 rebase -i,从我读过的内容来看,我需要转到一个交互式编辑器,我需要在其中手动重新排序提交,然后我可以执行 git push origin 以将所有内容应用到 commit-SHA(其中已重新排序)。不理想,因为我必须做手工工作。
总的来说,我认为 rebase 更接近我的需要,但我找不到一种简单的方法来以编程方式完成它。谁能想出一些可以完成我任务的git类比操作?
【问题讨论】:
-
让我直截了当地说 - 一个分支上有一堆提交需要应用到另一个分支,并且在每个提交中只有一个文件被修改。所以也许提交 1 修改了文件 A,提交 2 修改了文件 B,等等?
-
@AdamS 是的,你说的是正确的,但可能有一堆提交修改同一个文件。假设我有 C1、C2、C3、C4 和 C2 修改文件 A,其余所有修改文件 B。现在我要推送文件 B 的修改(即 C1、C3、C4)。我知道 rebase -i 可以做到这一点,但请参阅我的主要帖子(没有编程方式)。
标签: git git-rebase cherry-pick