【问题标题】:How to cherry pick uncommited changes in some files into a new branch?如何将某些文件中未提交的更改挑选到新分支中?
【发布时间】:2016-04-27 07:09:28
【问题描述】:

假设我有 branch 和 branch 。在我已经对file1、file2进行了几次更改。但是,我最终还对显然已修复的内容进行了重构,例如在 fileA、fileB 中。

现在我想创建一个不同的分支,将<my_feature> 中的这些更改隔离开来,让<my_updates> 只提交到文件A、文件B。

目前,我在 file1、file2、fileA 和 fileB 中有未暂存的更改。

我一直在阅读有关 git cherry-pick and git apply 的信息,但它涉及已经提交的内容。

现在这些更改都没有提交,我不知道我是否应该提交这个并挑选樱桃,或者是否有更好的处理方法。

为确保图片清晰,让我们对其进行一些视觉化处理:

我想做:

master ------------------
    \--- my_feature ----/
          file1
          file2

但现在我有

master ------------------
         my_feature ----/
          file1
          file2
          fileA
          fileB

我想在继续使用<my_feature> 之前合并它(fileA、fileB 中的更改):

master ------------------
    \--- my_updates ----/
          fileA
          fileB

这样<my_feature> 将只包含file1、file2 中的更改。

【问题讨论】:

  • 在您的分支上提交file1file2,然后签出master。未提交的更改将被结转。
  • 这里使用poke的方法,因为它是最简单的。请注意,使用 git stash 也可以,但它是通过提交来实现的。您可以自己提交并根据需要复制内容,然后也可以“取消”原始提交。这在 git 中所做的工作量与使用 git stash 基本相同(因为它会提交),这只是您个人对什么感到满意的问题。

标签: git git-commit cherry-pick


【解决方案1】:

你可以git stash,移动到一个新的分支,然后git stash pop。然后你可以做进一步的工作或提交结果。

您还可以通过将 git diff 的输出定向到文件 (git diff > changes.patch) 或剪贴板(OS X 为 git diff | pbcopy 或 Ubuntu 为 git diff | xclip -selection clipboard)来创建补丁。然后,您可以将带有git apply 的补丁应用到任何其他分支。

【讨论】:

  • 非常感谢! git diff fileA fileB > /tmp/changes.patch 然后git checkout master; git checkout -b my_feature; git patch /tmp/changes.patch 成功了。
【解决方案2】:

为了记录,这是我用来使它工作的完整命令集:

在分支<my_feature> 中,将差异存储在补丁中:

git diff fileA fileB > /tmp/changes.patch

存储更改以供以后重用:

git stash -u

使用该补丁从master 创建一个新分支:

git checkout master
git checkout -b my_updates
git patch /tmp/changes.patch
git add fileA fileB
git commit -m "Updated fileA, fileB because blabla"
git push

回到分支<my_feature> 并恢复隐藏的更改:

git checkout my_feature
git stash pop

去掉 fileA 和 fileB 中的更改,因为它们已经到位:

git checkout fileA fileB

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2012-11-21
    相关资源
    最近更新 更多