git - 在 Git 中,如何创建最旧提交之前的提交?

标签 git

我有一个 Git 存储库,其最旧的提交版本是 6.8.2(它被标记为“v6.8.2”)。我有 6.8.1 版本的包,我想将其作为最旧提交的父提交提交到存储库。这可能吗?如果是,怎么办?

最佳答案

您可以在您想要的最旧提交 (v6.8.1) 的基础上重新设置当前分支的基线。虽然它会改写您的历史记录,但这是可能的。

编辑以添加更多内容

假设你的代码在分支 master

清除现有代码并创建一个新分支。您的旧代码并没有丢失——它仍然存在于 master 分支上。

git symbolic-ref HEAD refs/heads/newbase
rm .git/index
git clean -dxf

现在您位于分支 newbase 上,这是一个空目录。将你想作为新基地的文件添加到这里。

<add the files to the directory>
git add .
git commit -a -m "New base commit v6.8.1"

新的你有两个分支 master 有你的原始代码和 newbase 只有你的新基础。

现在检查 master 分支并将其重新设置为 newbase 分支

git checkout master
git rebase newbase

然后您需要做的就是修复冲突,并且您有一个新的 master 分支,该分支从代码的早期状态开始。

不过这有点乱。如果您只想将代码添加到存储库,只需执行第一步,即创建一个新分支。标记它以便您知道它是什么,无需将 master 分支 rebase 到它上面,因为如果您到达 master 的基础,并且想回到更远的时间 - 您可以看看其他分支里有什么。

关于git - 在 Git 中,如何创建最旧提交之前的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378438/

相关文章:

混帐致命 : bad object when cherry-pick commit from another remote

eclipse - 在 egit 中被拒绝的非快进问题

Git 添加所有修改、删除和未跟踪的文件?

git - 如何让 GIT 忽略我的更改

git - 在Windows 10上使用Google Cloud SDK身份验证方法将Git推送到Google Cloud Source Repository的权限被拒绝(公钥)

git - 如何判断 merge 请求是否已 merge

git - 如何为 trac 存储库集成创建 git post-commit Hook

git - gitcherry-pick 中跳过的文件会包含在以后的 git merge 中吗?

git - 使用 Git 强制远程 repo 压缩 (GC)

git - 具有多个发布版本的软件开发的最佳工作流程