Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 一个分支上怎么可能有两次提交?_Git_Github - Fatal编程技术网

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三种樱桃树摘到了一个新的分支上,但是:这是怎么发生的呢?我被难住了

我有以下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三种樱桃树摘到了一个新的分支上,但是:这是怎么发生的呢?我被难住了


编辑 我不知道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.