将git父指针设置为不同的父级 [英] Setting git parent pointer to a different parent

查看:90
本文介绍了将git父指针设置为不同的父级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我在过去提交了一个指向一位父母的提交,但是我想更改它指向的父代,那么我该如何去做?

解决方案

使用 git rebase code> 。它是通用的在git中使用不同的父(基)命令进行提交并将其放在不同的父(基)命令中。



有些事情要知道,因为提交SHA涉及他们的父母,所以当你改变给定提交的父对象时,其SHA将改变 - 就像SHA的SHA一样 所有提交在开发线之后(比它更新)。 如果您正在与其他人一起工作人们,而且你已经把公开提交的问题推到了他们已经提交的地方,修改提交可能是一个坏主意™。这是由于#1,因此当试图找出由于您的SHA不再匹配他们的相同提交而发生的情况时,其他用户的存储库会遇到混淆。



(请参阅链接手册页中的从上传重新引导部分)

也就是说,如果您目前在某个分支上提交了一些您想要转移到新父项的提交,它看起来像这样:

  git rebase --onto< new-parent> <旧的父> 

这会在 < old - 在当前分支中位于< new-parent>的顶部。

If I have a commit in the past that points to one parent, but I want to change the parent that it points to, how would I go about doing that?

解决方案

Using git rebase. It's the generic "take commit(s) and plop it/them on a different parent (base)" command in Git.

Some things to know, however:

  1. Since commit SHAs involve their parents, when you change the parent of a given commit, its SHA will change - as will the SHAs of all commits which come after it (more recent than it) in the line of development.

  2. If you're working with other people, and you've already pushed the commit in question public to where they've pulled it, modifying the commit is probably a Bad Idea™. This is due to #1, and thus the resulting confusion the other users' repositories will encounter when trying to figure out what happened due to your SHAs no longer matching theirs for the "same" commits. (See the "RECOVERING FROM UPSTREAM REBASE" section of the linked man page for details.)

That said, if you're currently on a branch with some commits that you want to move to a new parent, it'd look something like this:

git rebase --onto <new-parent> <old-parent>

That will move everything after <old-parent> in the current branch to sit on top of <new-parent> instead.

这篇关于将git父指针设置为不同的父级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆