【发布时间】:2017-10-17 03:08:42
【问题描述】:
我有一个遥控器,其历史记录如下:
你可以看到 O 和 P 是合并提交,他们都关闭了他们的旧分支,所以现在只有一个分支。
我想将 C-D-E-G-J-K-L-N 压缩到一个提交中,并将 F-H-I-M 压缩到另一个提交中,因为它们只是混乱历史的微小提交。
在本地我设法使用the answer by John O'M. to this question 中描述的方法挤压 C-D-E-G-J-K-L-N,如下所示:
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]
这有效,来自主分支的本地 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 而无需重新创建整个 repo?
【问题讨论】:
-
这似乎需要做很多工作,但收效甚微。
-
如果“大量工作”是指过于复杂,那么可以。
标签: git version-control merge bitbucket