首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂GIT清理

复杂GIT清理
EN

Stack Overflow用户
提问于 2022-09-15 14:08:56
回答 1查看 25关注 0票数 0

我在一个my-branch分支上做一个很大的工作,这个分支是用develop创建的。在此期间,我正从develop那里抽离,认为这是个不错的选择。

过了一段时间,develop分支被重命名为test。其他开发人员被告知在test分支上进行测试。

我被告知develop分支被重命名为test,但是我没有被告知我应该从master开始使用but (以合并)。

然后我开始从master上拉车。

现在,my-branch有很多我的工作(好的),还有很多的测试--糟糕的测试,不应该合并到掌握中。

我需要:

master中删除

  • my-branch中删除的所有提交:不是属于我的&也不在my-branch

换句话说,我需要删除所有的提交这意味着那些提交是测试/垃圾。

怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 14:21:12

这可能会起作用(假设您的本地master/test分支已经与远程分支同步):

代码语言:javascript
复制
git rebase --onto master test my-branch

这可以读成这样: git,__,将my-branch上的所有修订重新定位在master之上,但确保丢弃组成test分支历史的所有修订……谢谢!

这应该只是你的修订,除非你做了一些古怪的事情。

或者,如果您能够从git log中得到一个符合您的需求的提交列表(日志允许您提供匹配的作者并能够判断提交是否应该被排除(^exclude-commits-from-this-branch-or-commit)并包括在内(普通的git log whatever),那么您就可以得到一个类似于git log --author="somebody" --reverse --no-merges --pretty="%h" ^exclude-from-here ^also-from-here this-is-what-i-want-to-rebase > commits.txt的提交列表)。然后,你可以用:

代码语言:javascript
复制
git checkout --detach master
while read commit; do
    git cherry-pick $commit
    if [ $? -ne 0 ]; then
        echo There was an error cherry-picking $commit
        break
    fi
done < commits.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73732666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档