做了一段时间后,我意识到如果gh-pages提交“Bring into line with master commit xxxxxxxx”实际上将xxxxxxx作为其在git存储库中的父级将会很好。像这样(糟糕的MSPaint艺术):
有没有办法让代码库看起来像上面第二张图片那样?我知道如何使新的提交遵循这种模式:我可以执行 "git merge -s ours master"(设置一个否则为空的提交的父级),然后执行 "git commit --amend adv550.z8"(其中 adv550.z8 是实际更改的二进制文件)。但是 Git 是否能够轻松地回溯并向旧提交添加新的父级呢?一旦我让本地仓库正确地工作,我完全可以执行 "git push -f" 并清除 Github 代码库的当前历史记录。问题是,我是否能够让本地仓库正常工作呢?
多年后进行编辑: 我最终放弃了使
gh-pages
的git历史看起来像那样的尝试;我决定这是为零收益而付出太多努力。我的新做法是积极地压缩对gh-pages
的提交,因为在我的情况下保存这些提交消息并不重要。(它只是一长串“将其与主分支保持一致”的提交,其中没有任何历史上有趣的内容。)然而,如果我需要再次这样做,我会听从那些回答的建议。git merge $intended_parent_1 $intended_parent_2
git checkout $original_commit -- .
git commit --amend -a -C $original_commit
git show --pretty=%P $original_commit | head -n1
这行命令——因为我的git(版本号为2.11.1)输出了很多不只是父提交记录那一行。 - kgadekgit show --pretty="format:%P" --no-abbrev-commit --no-patch ${original_commit}
命令来避免使用head -n 1
。 - Maddesgit filter-branch $original_parent..HEAD
命令会使嫁接永久化,因此也会在 Github 上显示。但需要注意的是:我要添加父级的提交是最新的(HEAD),并且我只向一个原始父级的提交添加了1个父级。 - Emoun