git - 如何从 git 中已推送的分支中删除所有提交?

标签 git git-branch

我们正在与许多团队成员一起开展一个项目,现在正在努力改进我们的工作方式。目前,所有工作都是在几年前从 master 分支出来的 integration 分支中完成的。由于某种原因,在 master 分支中完成了大约 600 个提交,但没有 merge 到集成中,还有在集成中完成的大约 1200 个提交没有 merge 到 master 分支中。所有版本都完全脱离集成分支,主分支一年一次都没有被触及。我们希望使用 master 分支作为我们的稳定分支,但为了做到这一点,我们需要 merge 来自 integration 的所有更改,并且不保留任何分歧的更改在主控中完成。

有没有一种头痛的方法可以从主分支中删除“无效”提交?或者我们应该简单地创建一个新的存储库或当前集成位置的另一个稳定分支?

更新不幸的是,非快进和远程分支删除被拒绝,我仍在等待存储库托管负责人的回复。我认为改变不会那么容易,遗憾的是它是一家大公司。

最佳答案

如果您无法进行远程删除,那么最简单的方法是:

git checkout integration
cp -a . ../integration-source
rm -rf ../integration-source/.git
git checkout master
mv .git ../integration-source
cd ../integration-source
git add --all
git commit -m"massive commit to make master identical with integration"
git push
cd ..
rmdir projectdirname
mv integration-source projectdirname

哒哒!

如果您可以进行远程删除:

git push --force origin integration:master

关于git - 如何从 git 中已推送的分支中删除所有提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725209/

相关文章:

objective-c - 第三方代码和 Git

git - 有没有简单的命令可以将分支转换为标签?

java - 更改配置以触发电子邮件发送自动化测试结果

git - 如何将标签推送到 CI 中的分支?

git - 在 Cygwin 中无法看到 git 颜色

Git 删除 git 日志中的原点/分支

git - 当我已经有多个分支时应该如何添加新文件

git - 从 master 更新 Git 分支

git - 如何在git中关注一个文件

git - 为什么fork-point要更新?