我找不到适合的匹配方法,但是必须有一种更短的方法...假设我们有一个项目的子树,选择one at random here作为本地存储库,我想回到12月11日修订版6b6e73b3e77176a8a80ae01a1844914102728acd,即撤消上面的六个提交(在撰写本文时)。通过阅读文档,我知道我可以做到:
<Group of 3 A's>
但是肯定有一种更简单,更通用的方式,例如:
git revert commit1 commit2 commit3 commit4 commit5 commit6
这给我“致命的错误:修订版'src / vs / editor / contrib / codelens'”。
当然可以:
git revert HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
为我提供了给定目录的所需修订版本,但是我想拥有一个git生成的还原日志以实现可追溯性,等等。
答案 0 :(得分:2)
我已经尝试过并得出结论,这不是一个好主意,但是本着共享的精神,这就是我的想法。首先,要获取要还原的版本列表,我做了:
git log --first-parent --no-merges --pretty=format:"%h" \
HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .
因此,为了将其输入到git revert中,我做到了:
git revert --no-commit $(git log --first-parent --no-merges --pretty=format:"%h" \
HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .)
但是,在我自己的存储库中,事情变得凌乱,并且存在许多合并冲突,所以我只是放弃了而做:
git revert --abort
git checkout 6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
然后手动添加以下结果:
git log --first-parent --no-merges --oneline \
HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .
提交消息。