GIT:将branch1和branch2 merge 到master中而不覆盖

标签 git

我有以下情况:

  1. 创建了新分支 branch1来自master
  2. branch1 ,我添加了一个名为 b1.txt 的新文件+ 也在 common.txt我添加了新行 echo 'line added in branch1'; .
  3. 创建了新分支 branch2来自branch1
  4. 重命名了文件 b1.txtb2.txt + 也在 common.txt我将该行更改为 echo 'line added in branch2'; .
  5. 已 merge branch1进入master
  6. 已 merge branch2进入master

结果:master有 1 个新文件 b2.txt ,以及 common.txt 中的新行上面写着echo 'line added in branch2'; .

我想要得到的结果: master有 2 个新文件 b1.txtb2.txt ,以及 common.txt 中的 2 个新行上面写着echo 'line added in branch1';echo 'line added in branch2'; .

如何实现这一目标?

注意:我知道,通常情况下,我应该创建 branch2来自master ,但是复制粘贴(并稍微修改) branch1 的更改要容易得多,虽然branch1尚未 merge 到 master .

最佳答案

您可以从 branch1 创建 branch2 以使用更改后的文件,然后使 branch2 指向 master git重置:

git checkout master
git checkout -b branch1
* make changes and commit *
git checkout -b branch2
git reset --soft master
* make changes and commit *

此时,两个分支都有自己的更改和独立的历史记录(直到master),从而可以轻松地使用git mergebranch1branch2 merge 到master。

关于GIT:将branch1和branch2 merge 到master中而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51174187/

相关文章:

相当于 p4sync -n 的 git 命令

linux - SonarQube 可以配置为在 linux 机器上使用 windows 行结尾吗?

ruby-on-rails - Heroku、Rails 和 ActiveUUID——Heroku 使用旧的迁移文件?

windows - 更改 Git 用户名

git - git 的 jenkins 中没有发生自动构建

Git 不允许我将分支切换为 "changes to the following files would be overwritten",但是,git-status 显示没有任何变化

git - Git 如何记录(或更可能地表示)其 blob 的文件路径和名称,然后识别重命名?

git - git : "already exists and is not a valid git repo" 错误

git - 通过 gitbash 或命令提示符在 github 中创建一个存储库

Git rebase而不是merge,正确的方法是什么?