Git 一个分支上怎么可能有两次提交?
我有以下Git历史记录:Git 一个分支上怎么可能有两次提交?,git,github,Git,Github,我有以下Git历史记录: D-E-A-B-C-A-B-C (feature2) / *-D-E (feature1) / *-F (develop) 我不知道A、B和C是如何两次出现在feature2上的。我一直在使用git-rebase-feature1和git-rebase-to-development-feature1对feature2的功能进行重定基址和关闭功能1。我已经纠正了这种情况,把A、B和C三种樱桃树摘到了一个新的分支上,但是:这是怎么发生的呢?我被难住了
D-E-A-B-C-A-B-C (feature2)
/
*-D-E (feature1)
/
*-F (develop)
我不知道A、B和C是如何两次出现在feature2上的。我一直在使用git-rebase-feature1
和git-rebase-to-development-feature1
对feature2的功能进行重定基址和关闭功能1。我已经纠正了这种情况,把A、B和C三种樱桃树摘到了一个新的分支上,但是:这是怎么发生的呢?我被难住了
编辑 我不知道Github在这里做什么,但现在Git说:
Your branch and 'origin/feature2-fresh' have diverged,
and have 113 and 100 different commit(s) each, respectively.
看来这是Github的错了?一种可能性:重复提交可能是git cherry pick的一个信号(请参阅“”和) 如果A和B是在重基后的任意点上拾取的,则可以将它们添加到feature2,即使该分支已经包含A和B(具有不同的SHA1) 如果A和B是在重基之前采摘的,那么A和B不应该重复(从) 如果上游分支已经包含您所做的更改(例如,因为您邮寄了一个应用于上游的补丁),则将跳过该提交 发生的事情如下:
- 因此,我将
重新设置为feature2
李>feature1
- 我将
重新设置为feature2
李>develope
- 我推了推
,然后意识到还有更多的工作要做,所以再次跳了重基舞(feature2
需要运行feature1
)李>feature2
feature2
唯一的所有提交的SHA-1与origin/feature2
上的相应提交不同没有意识到,我做了一个
拉
。Git尽职尽责地再次合并所有提交,因为它们具有不同的SHA。这个故事的寓意是:
不要重新设置推送分支的基础。这些分支不能是完全相同的提交,因为它们具有相同的内容和相同的SHA-1。相同的提交是什么意思?相同的差异,不同的SHA-1。我不知道他们从哪里来
git log——graph
似乎在考虑开发,而git branch——包含的
只是认为它们在功能2上。第二条错误消息表示两个不同的rebase(一个本地,一个由另一个合作者推送到GitHub):SHA1是不同的(即使内容可能类似)。其中一方(本地或GitHub)必须将其内容重置为另一方。@MattBrennan好的,您可以选择一个提交范围;)反馈很好,比我的答案更详细+1.