我有以下情况:
clone从主存储库(X)创建了一个(Y),因为有许多人在Y上工作,我们没有做任何事情rebase,只有merges.当我们想要将(push)Y 传递给X时,我们想做一rebase件事,以便让事情变得干净整洁问题在于,当rebase我们被要求进行我们在之前merge步骤中已经完成的所有合并时.有没有解决方案,除了意味着重新进行合并的那个?
我预计它会非常简单,因为我们已经解决了冲突的合并.
我有一个具有如下历史记录的遥控器:
如您所见,O和P是合并提交,并且它们都关闭了它们的旧分支,因此现在只有一个分支。
我想将CDEGJKLN压缩为一次提交,将FHIM压缩为另一次提交,因为它们只是使历史混乱的微小提交。
在本地,我设法使用John O'M的答案中所述的方法压缩CDEGJKLN。对于这个问题,像这样:
git checkout -b squashing-1 N
git reset --soft C~
git commit -m "Squashed history"
git replace N [ID_of_the_commit_i_just_made]
Run Code Online (Sandbox Code Playgroud)
并且可以正常工作,git log从主分支本地正确地报告Q,P,O,X,M,I等(X是新压缩的提交)。
从这里开始,下一步是(1)签出主分支并合并更改,(2)删除临时本地分支,然后(3)将更改推送到远程仓库。但是(1)和(3)报告“ 已经更新”或“ 一切都已更新”,因为对树没有任何实际更改,这正是所有这些要点。
我也尝试过使用git push --force origin main-branch,git push --force-with-lease origin main-branch但是得到了相同的结果:一切都是最新的。
如何正确合并这些历史记录更改并将其推送到BitBucket,而不必重新创建整个存储库?