• 我把几个提交(commit)提交到了同一个分支,而这些提交应该分布在不同的分支里
  • 发布于 2个月前
  • 301 热度
    0 评论
  • 乌龙山
  • 0 粉丝 32 篇博客
  •   

问题:我把几个提交(commit)提交到了同一个分支,而这些提交应该分布在不同的分支里,这种情况该怎么处理?

假设你有一个main分支, 执行git log, 你看到你做过两次提交:

(main)$ git log

commit e3851e817c451cc36f2e6f3049db528415e3c114
Author: Alex Lee <alexlee@example.com>
Date:   Tue Jul 22 15:39:27 2014 -0400

    Bug #21 - Added CSRF protection

commit 5ea51731d150f7ddc4a365437931cd8be3bf3131
Author: Alex Lee <alexlee@example.com>
Date:   Tue Jul 22 15:39:12 2014 -0400

    Bug #14 - Fixed spacing on title

commit a13b85e984171c6e2a1729bb061994525f626d14
Author: Aki Rose <akirose@example.com>
Date:   Tue Jul 21 01:12:48 2014 -0400

    First commit
让我们用提交hash(commit hash)标记bug (e3851e8 for #21, 5ea5173 for #14).
首先, 我们把main分支重置到正确的提交(a13b85e):
(main)$ git reset --hard a13b85e
HEAD is now at a13b85e
现在, 我们对 bug #21 创建一个新的分支:
(main)$ git checkout -b 21
(21)$
接着, 我们用 cherry-pick 把对bug #21的提交放入当前分支。这意味着我们将应用(apply)这个提交(commit),仅仅这一个提交(commit),直接在HEAD上面。
(21)$ git cherry-pick e3851e8
这时候, 这里可能会产生冲突, 参见交互式 rebasing 章 冲突节 解决冲突.

再者, 我们为bug #14 创建一个新的分支, 也基于main分支
(21)$ git checkout main
(main)$ git checkout -b 14
(14)$
最后, 为 bug #14 执行 cherry-pick:
(14)$ git cherry-pick 5ea5173

用户评论