将更改从一个分支复制到另一个分支

我有一个从 master名为 BranchA的分支。我有一些变化在 BranchA(我不打算合并变化从 BranchAmaster)。

现在我已经从 master创建了另一个名为 BranchB的分支。

如何复制从 BranchABranchB的更改?

265616 次浏览

合并从 BranchA 到 BranchB 的更改。当您在 BranchB 上时执行 git merge BranchA

git checkout BranchB
git merge BranchA

如果您不打算将更改合并回 master,那么这就是全部内容。一般来说,将所有更改合并回 master,并从 master 创建新的分支是一个很好的实践。

此外,在 merge 命令之后,您将遇到一些冲突,您必须手动编辑并修复这些冲突。

确保位于要将所有更改复制到的分支中。git merge将获取您指定的分支,并将其与您当前所在的分支合并。

Instead of merge, as others suggested, you can rebase one branch onto another:

git checkout BranchB
git rebase BranchA

这将 BranchB重新定位到 BranchA上,这实际上看起来就像 BranchB是从 BranchA而不是 master分支出来的。

This is 2 step process

  • git checkout BranchB ( destination branch is BranchB, so we need the head on this branch)
  • Git 合并 BranchA (它将把 BranchB 与 BranchA 合并,这里你合并了分支 B 中的代码)

如果您想把您的分支代码推到远程回购,然后这样做

  • Git 推送源代码 master (它将把 BranchB 代码推送到远程回购)

A 科的内容复制到 BranchB

git checkout BranchA
git pull origin BranchB
git push -u origin BranchA

如果您使用的是 乌龟饭桶

请按以下步骤操作。

  1. 检查 BranchB
  2. 打开项目文件夹,转到 TortoiseGit --> Fetch
  3. 在拉动屏幕中,更改远程分支 BranchA并单击 ok。
  4. 然后再次右键单击,转到 TortoiseGit --> Push

现在,您的更改从分支 A 移动到分支 B

对我来说,解决方案是——将当前更改隐藏在分支中,然后切换分支,然后将该隐藏应用到该分支。

使用 git 开关的简化解决方案

如果你有 git 2.23或者更高,你可以使用 git switch命令来做同样的事情,因为 git checkout命令用于很多时候会让人困惑的事情


// This command will switch(go) to BranchB
// use flag -c if you haven't created this branch yet
git switch BranchB




// git merge combines sequences of commits from BranchA to the
// current branch (which is BranchB)
git merge BranchA