我有两个分支从我的掌握:

  • v2。1:(第2版)我已经工作了好几个月
  • :我创建了昨天添加一个特定功能要我的掌握(生产)

有没有一种方法来复制昨天的承诺,从鞋v2。1?

有帮助吗?

解决方案

你真的应该有一个工作流程,让你做的这一切,通过合并:

- x - x - x (v2) - x - x - x (v2.1)
           \
            x - x - x (wss)

所以你要做的就是 git checkout v2.1git merge wss.如果由于某种原因你真的不能这样做,而且你不能使用 衍合 移动你的鞋分支到正确的地方,该命令要抓住一个单一的承诺从某个地方并将其应用在其他地方是 git cherry-pick.只是检查出支您想要应用它,并且运行 git cherry-pick <SHA of commit to cherry-pick>.

一些方面衍合可能会救你:

如果你的历史是这样的:

- x - x - x (v2) - x - x - x (v2.1)
           \
            x - x - x (v2-only) - x - x - x (wss)

你可以用 git rebase --onto v2 v2-only wss 移动鞋上直接v2:

- x - x - x (v2) - x - x - x (v2.1)
          |\
          |  x - x - x (v2-only)
           \
             x - x - x (wss)

然后你就可以合并!如果你真的,真的, 真的 不能得到点可以合并,仍可以使用的变基于有效地做些樱桃的-拿起一次:

# wss-starting-point is the SHA1/branch immediately before the first commit to rebase
git branch wss-to-rebase wss
git rebase --onto v2.1 wss-starting-point wss-to-rebase
git checkout v2.1
git merge wss-to-rebase

注:原因,它需要一些额外的工作,为了做到这一点的是,它的建立重复的承诺,在你的存储库。这是不是一个真正的好事-整点便分支和合并是能够做的一切,通过使提交(s)一个地方,并将其合并到,无论他们是需要的。重复的承诺意味着,意图从来没有对合并这两个分支(如果你决定要以后,你会得到冲突)。

其他提示

使用

git cherry-pick <commit>

申请 <commit> 你的 目前的分支.

我自己可能会交叉检查提交我挑中 gitk 和cherry-pick他们有权击犯的条目的有替代。


如果你想去更加自动化(与所有其危险)并且假定,所有提交自从昨天发生的上鞋你可能产生的列表的承诺使用 git log 与(--pretty 建议通过Jefromi)

git log --reverse --since=yesterday --pretty=%H

所以一切都一起承担您使用 bash

for commit in $(git log --reverse --since=yesterday --pretty=%H);
do
    git cherry-pick $commit
done

如果出现错误在这里(有很大的潜力)你有麻烦,因为这种工作上的生活结帐,因此,无论做樱桃的-拿起或使用的变基样建议通过Jefromi.

git cherry-pick :应用的变化引入的一些现有的承诺

假设我们有分支 一个 与(X、Y、Z)提交。我们需要添加这些承诺支 B.我们要用的 cherry-pick 操作。

当我们使用 cherry-pick, ,我们应当添加提交的树枝上 B 在同一时间顺序,即提交中出现的分支 一个.

cherry-pick并支持一系列的承诺,但是如果你已经合并提交,在这一范围,它变得非常复杂

git checkout B
git cherry-pick SHA-COMMIT-X
git cherry-pick SHA-COMMIT-Y
git cherry-pick SHA-COMMIT-Z

例的工作流程:

enter image description here

我们可以使用 cherry-pick选项

-电子或--编辑 :与此选项,git cherry-pick会让你编辑所提交信息之前犯。

-n-没有-提交 :通常命令将自动创建一个序列的提交。这标志应用的变化,需要cherry-pick每名提交给你的工作树和索引,没有作出任何承诺。此外,当这种选择是使用你的指数没有匹配的头提交。Cherry-pick样做是对的开始状态的指标。

这里一个有趣的 文章 关于 cherry-pick.

你可以 创建一个补丁 从提交的,你想要和复制 适用贴片 到目的地的分支。

或如果你是个小小的福音传教士的方面,你可以做一个小丑我使用。在deploy_template有提交我想要复制在我的主人为的分支部署

git branch deploy deploy_template
git checkout deploy
git rebase master

这将创造新的分支部署(I使用-f,以复盖现有部署的分支)在deploy_template,然后重订这个新的分支到主,而使deploy_template不变。

为简单情况下的只是复制的最后一次提交的来自支的鞋v2。1,你可以简单地抓住提交id(git log --oneline | head -n 1)和做:

git checkout v2.1
git merge <commit>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top