Git-rebase-i压扁没有';不要删除提交

Git-rebase-i压扁没有';不要删除提交,git,github,commit,rebase,squash,Git,Github,Commit,Rebase,Squash,我在origin master的头之后有一个本地提交,并希望合并最后两个提交。因此,假设历史如下: * e9199ba - (HEAD -> master) | test * c4e3b53 - (origin/master, origin/HEAD) | Saturn ring angle change in X and Y 并希望进行一次提交,而不是e9199ba和c4e3b53。 我做了gitgit-rebase-I HEAD~2并压扁了第二

我在origin master的头之后有一个本地提交,并希望合并最后两个提交。因此,假设历史如下:

* e9199ba - (HEAD -> master)
|           test
* c4e3b53 - (origin/master, origin/HEAD)
|           Saturn ring angle change in X and Y
并希望进行一次提交,而不是
e9199ba
c4e3b53
。 我做了git
git-rebase-I HEAD~2
并压扁了第二次提交:

pick c4e3b53 Saturn ring angle change in X and Y
squash e9199ba test
因此,我有两个独立的提交—新的压缩提交和旧的主提交:

* 216b314 - (HEAD -> master)
|           Suqashed commits
| * c4e3b53 - (origin/master, origin/HEAD)
|/            Saturn ring angle change in X and Y
这里怎么了?是因为原籍主人的头吗?在这种情况下如何组合它们?或者可能有一些历史记录显示了问题?

正如您所说:

。。。我有两个独立的提交-新的压扁一个和老主人的一个

这正是您应该期望的,因为
git-rebase
通过复制提交(可能需要进行一些修改,例如挤压)来工作,然后让您的git将您自己的分支名称指向新的副本

但是
origin/master
不是您自己的、重定基础的分支。这是您的远程跟踪分支,它可以记住其他Git在另一Git的
主文件中的内容。因此,您的
origin/master
会继续记住另一个Git所拥有的内容,这是在您创建稍微修改的副本之前的原始提交

另一个Git存储库本身(您称之为
origin
)具有另一个提交。既然
origin
拥有它,任何从
origin
复制的人都拥有它。您必须说服
origin
,以及从
origin
复制的任何人切换到您的新提交

如果您可以控制
origin
,则可以使用“强制推送”来覆盖其
master
中的所有内容,并使用新提交。(
origin
存储库也将保留旧的提交,尽管可能非常短暂,直到它完成“垃圾收集”过程。)然后您还必须说服
origin
的所有用户也切换,就像您所做的和您强制
origin
所做的一样。具体如何做到这一点取决于你自己

请注意,如果其他人也在推送至
原点
,则您的强制推送可能会删除他们添加的提交,这取决于
c4e3b53
。在强行推进之前,你应该与其他人协调。(如果没有这样的人,协调起来就容易多了。)

正如你所说:

。。。我有两个独立的提交-新的压扁一个和老主人的一个

这正是您应该期望的,因为
git-rebase
通过复制提交(可能需要进行一些修改,例如挤压)来工作,然后让您的git将您自己的分支名称指向新的副本

但是
origin/master
不是您自己的、重定基础的分支。这是您的远程跟踪分支,它可以记住其他Git在另一Git的
主文件中的内容。因此,您的
origin/master
会继续记住另一个Git所拥有的内容,这是在您创建稍微修改的副本之前的原始提交

另一个Git存储库本身(您称之为
origin
)具有另一个提交。既然
origin
拥有它,任何从
origin
复制的人都拥有它。您必须说服
origin
,以及从
origin
复制的任何人切换到您的新提交

如果您可以控制
origin
,则可以使用“强制推送”来覆盖其
master
中的所有内容,并使用新提交。(
origin
存储库也将保留旧的提交,尽管可能非常短暂,直到它完成“垃圾收集”过程。)然后您还必须说服
origin
的所有用户也切换,就像您所做的和您强制
origin
所做的一样。具体如何做到这一点取决于你自己

请注意,如果其他人也在推送至
原点
,则您的强制推送可能会删除他们添加的提交,这取决于
c4e3b53
。在强行推进之前,你应该与其他人协调。(如果没有这样的人,协调起来就容易多了。)