Git 排除分支中的提交

发布于 2024-08-26 19:08:45 字数 573 浏览 9 评论 0原文

我有一个提交,我已存储在分支中,因为这应该只发送到特定的框。

我已将其合并到我本地使用的分支 master,但没有合并到分支 dev。

现在,我错误地将 master 合并到 dev 中,并将此提交引入到 dev 中。

我知道可以 git revert sha,到分支 dev;但由于这将引入一个撤消该提交的提交(我猜测,我还没有完全尝试过这一点),当我合并 master 时,该提交也会被撤消吗?

如果是这样,我如何仅从分支开发人员撤消此提交。

哦, git reset HEAD^1 --hard 不是一个选项,因为在不需要的提交之后,master 上还有其他提交。

如果再次重置并应用是唯一的选项,那么我如何只合并来自 master 的那些额外提交而不是不需要的提交。

更新:

这是提交树。看起来很复杂。我已经指出了开发中不需要的提交。 (我还删除了任何个人身份信息,感谢您的理解。对 gitk 进行截图比对 ascii art 进行截图要简单得多。) alt text

提前致谢!

I have a commit, I have stored in a branch, because this should go only to a specific box.

I have merged it to the branch master, but not the branch dev, that I use locally.

Now, by mistake I merged master to dev and that introduced this commit to dev.

I know can git revert sha, to branch dev; but since this is going to introduce a commit that undoes that commit (I am guessing, I haven't exactly tried this), when I merge master, will this commit be undone too?

If so, how do I undo this commit only from the branch dev.

And oh, git reset HEAD^1 --hard is not an option because there are other commits on master, after the un-needed commit.

If reset back again and apply is the only option, then how do I only merge those extra commits from master other than the un-needed commit.

Update:

Here is the commit tree. Looks complex. I have pointed to the commit, that I don't need in the dev. (I have also removed any personally identifiable information, thanks for understanding. It is so much simpler to screenshot gitk than to ascii art.)
alt text

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

反话 2024-09-02 19:08:45

在分支的临时副本上,git rebase --interactive 并删除不需要的提交。或者,您可以在不需要的提交上游创建一个新分支,然后使用 gitcherry-pick 将所需的提交添加到该分支上。

可能还有更多方法可以实现这一目标。

On a scratch copy of your branch, git rebase --interactive and drop the unwanted commit. Alternatively, you could create a new branch upstream of the unwanted commit and git cherry-pick the desired commits onto it.

There are probably more ways to achieve this.

随波逐流 2024-09-02 19:08:45

git reflog,然后 git reset --hard 是你撤销错误的朋友。

为了避免合并分支时出现单次提交,这是我刚刚在项目中使用的:

  • 假设:从分支 B 合并到 head。
  • 识别要避免的提交的 revid (R0)
  • 识别 R0 之前的提交的 revid (R1)

    git merge ;
    git merge -s 我们的 R0
    git合并B
    

git reflog, then git reset --hard are your friends to undo mistakes.

In order to avoid a single commit when merging a branch, this is what I have just used in my project:

  • Assume: merge from branch B to head.
  • Identify revid of commit to be avoided (R0)
  • Identify revid of commit just prior to R0 (R1)

    git merge <R1>
    git merge -s ours R0
    git merge B
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文