【问题标题】:How to stash different between two branches?如何在两个分支之间存放不同的东西?
【发布时间】:2021-08-18 04:27:24
【问题描述】:

我的本​​地 IDE 上有两个分支 branch_1branch_2。我想在 branch_1branch_2 之间存储更改。我该怎么做 ?请帮助我使用 git 命令。 我实际上想要的是创建一个新分支branch_new,并且在那个新分支中我想要更改 branch_1branch_2 所以,我认为我需要先以某种方式获取存储,然后将存储弹出我的 branch_new 。 建议我如何做到这一点。

【问题讨论】:

  • 您能解释一下为什么要这样做吗? AFAIK git stash 只允许存储一些未提交的更改。
  • 我知道 git stash 做了什么,我想要的是对两个分支进行更改并将更改应用于其他分支。
  • 您应该使用此详细信息更新您的问题,以便我们了解您的实际需求:)
  • 为什么不创建新分支并将第一个分支合并到其中,然后再合并第二个?

标签: git github intellij-idea terminal git-branch


【解决方案1】:

根据评论

我想要的是对两个分支进行更改并将更改应用到 其他分支。

如果已经将提交推送到 branch_1branch_2

cherry-pick 是一种理想的方式。

  1. 确保您切换到要应用更改的正确分支,即 branch_new

    git switch branch_new

  2. 执行cherry-pick命令如下

    git cherry-pick <commit-hash>

通过浏览git log,在新分支中获取您想要的每个提交的commit-hash

注意

如果您从公共存储库获得提交,请使用 git cherry-pick -x <commit-hash>。这将有助于生成提交消息并跟踪提交更改的来源。因此您可以在以后参考以避免合并冲突。

【讨论】:

    【解决方案2】:

    我想你正在使用 IntelliJ,除了 stash,还有一个名为“Shelve”的功能。当您右键单击已更改文件的默认更改列表(尚未提交)并选择搁置更改时,无论移动到搁置的更改是什么。稍后根据您的选择更改为不同的分支后,取消搁置更改,这将是默认更改。您可以将其提交到新分支。

    【讨论】:

      【解决方案3】:

      您可以在 branch_1 上使用 git stash 将更改存储在 branch_1 上。

      现在,创建一个新分支并切换到它。

      在新分支上应用使用git stash pop 创建的存储。

      branch_2 也可以这样做

      【讨论】:

        【解决方案4】:

        您也可以通过 UI 将更改应用到另一个分支。 它可以通过 IDE 中提供的功能来实现:

        1. Cherry-pick
        2. Cherry-Pick Selected Changes

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-18
          • 2016-02-23
          • 2021-11-13
          • 1970-01-01
          • 2021-11-06
          • 1970-01-01
          • 2020-08-26
          相关资源
          最近更新 更多