获取整个分支并将其重新建立在另一个提交上

问题描述 投票:0回答:1

我最近继承了一些乱七八糟的PHP代码。它到处都有硬编码的路径和 URL,每次将代码从测试服务器移动到生产服务器时,我都必须更改这些路径和 URL。我最终创建了一个与“主”分支分离的新“生产”分支,其中我将所有硬编码路径和 URL 更改为生产服务器中使用的路径和 URL。换句话说:

A - B - C
        \
         \-D - E

C
是我工作的主分支。其中,URL 和路径对应于我的测试服务器。我创建了一个新的“生产”分支(
D
E
),在其中更改了生产服务器的路径。

现在我在主分支中添加了一些新功能:

A - B - C - F - G - H
        \
         \-D - E

我想应用那些

D
E
提交,其中我将路径和 URL 更改为最新更改,到
H

从我读到的内容来看,

rebase
似乎正是这个功能,但是:

  1. 我读到的文档表明,对已经推送到远程服务器的分支进行变基是一个坏主意,这正是我所做的。

  2. 就我而言,“生产”分支有两个提交(因为要更改的路径太多,以至于我一开始忘记了其中一些),所以我不知道是否可以全部获取并重新设置它们的基础完全。

我在 Windows 和 Mac 上使用 Sourcetree,尽管我也可以处理命令行。

git atlassian-sourcetree git-rebase
1个回答
0
投票

在这种情况下使用

git rebase
。可能会发生一些代码冲突,但这些可以手动解决,只要冲突的文件是文本文件 - 代码文件、json 文件等。

使用了很多次,如果使用正确,不会出现任何问题,并且子分支可以轻松合并到主分支中。

作为我的经验法则,我使用

git rebase -i HEAD~<no.of.commits.to.be.squashed>
将子分支上的提交压缩为一次提交,因此,如果发生任何变基冲突,我只需一次提交即可解决它们。

© www.soinside.com 2019 - 2024. All rights reserved.