我在一个my-branch分支上做一个很大的工作,这个分支是用develop创建的。在此期间,我正从develop那里抽离,认为这是个不错的选择。
过了一段时间,develop分支被重命名为test。其他开发人员被告知在test分支上进行测试。
我被告知develop分支被重命名为test,但是我没有被告知我应该从master开始使用but (以合并)。
然后我开始从master上拉车。
现在,my-branch有很多我的工作(好的),还有很多的测试--糟糕的测试,不应该合并到掌握中。
我需要:
从master中删除
my-branch中删除的所有提交:不是属于我的&也不在my-branch中换句话说,我需要删除所有的提交这意味着那些提交是测试/垃圾。
怎么做?
发布于 2022-09-15 14:21:12
这可能会起作用(假设您的本地master/test分支已经与远程分支同步):
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的提交列表)。然后,你可以用:
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.txthttps://stackoverflow.com/questions/73732666
复制相似问题