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,我的开发分支与我的主分支有着不同的历史,尽管它们由于挤压合并而包含相同的内容,但我的开发分支的历史与我的主分支不同 在Github上,我对从dev分支到master的拉取请求使用了“挤压和合并”选项。这导致了master和dev之间实际上不存在的分离。根据Github,我的dev分支是在master之前的一系列提交,尽管这些提交被压缩合并到master 此外,我从dev到master的各种合并在dev上不存在,因此dev也在master后面。包括master上存在的提交,我没有将其合并到dev,

我的开发分支与我的主分支有着不同的历史,尽管它们由于挤压合并而包含相同的内容,但我的开发分支的历史与我的主分支不同

在Github上,我对从
dev
分支到
master
的拉取请求使用了“挤压和合并”选项。这导致了
master
dev
之间实际上不存在的分离。根据Github,我的
dev
分支是在
master
之前的一系列提交,尽管这些提交被压缩合并到
master

此外,我从
dev
master
的各种合并在
dev
上不存在,因此
dev
也在
master
后面。包括
master
上存在的提交,我没有将其合并到
dev
,因为我知道这只会让事情变得更糟

我如何解决这个问题?理想情况下,由于两个分支实际上是相同的(除了
master
上的1个commit应该在
dev
之前),如何同步这些分支

如果需要更多信息来帮助理解我的树,我可以用更多信息更新我的问题

更新: 我发现了一个类似的问题,我相信确实是壁球造成了这种混乱。恐怕我必须恢复合并,并在不挤压的情况下再次执行合并,以便Github能够正确理解这两个分支的历史

或者,我可以挤压
dev
分支本身上的提交,并重新合并一个提交,正如我所希望的那样,但这会牺牲分支的历史记录。我想我需要在这两种方法中选择一种。还有别的办法吗

或者,我可以挤压
dev
分支本身上的提交,并按照我的偏好重新合并一个提交

如果您从推送的
dev
分支到
master
执行PR,并合并挤压它。。。然后您的本地
dev
应该有效地重置为新的
master
状态

git fetch
git branch old-dev dev
git checkout -B dev origin/master

然后您可以从新的
dev
分支继续

事实上,我认为最好的选择可能是放弃当前dev分支的历史记录,并从压缩的历史记录中工作。这就是我的问题所在,我想-我希望Git/Github能够将
master
上的1个合并提交识别为
dev
上的提交集合,但它们被认为是完全独立的、不相关的提交,从而在历史上造成这种分歧。@Psymøn是的。如果您需要的话,我将旧的开发历史记录保存在本地分支“旧开发”中。