从 git 中的单个目录还原更改
Revert changes from a single directory in git
我找不到合适的匹配项,但必须有更短的方法...假设我们有一个项目的子树,选择 one at random here 作为本地存储库,并且我想回到 12 月 11 日的修订版 6b6e73b3e77176a8a80ae01a1844914102728acd,即撤消上面的六个(在撰写本文时)提交。通过阅读文档,我知道我可以做到:
git revert commit1 commit2 commit3 commit4 commit5 commit6
但肯定有更简单、更通用的方法,比如:
git revert HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
这给了我 "fatal: bad revision 'src/vs/editor/contrib/codelens'"。
当然,正在做:
git checkout 6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
为我提供给定目录所需的修订,但我想要一个 git 生成的还原日志以实现可追溯性等。
我已经试验并得出结论这不是一个好主意,但本着分享的精神,这就是我想出的。首先,要获得要还原的版本列表,我做了:
git log --first-parent --no-merges --pretty=format:"%h" \
HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .
所以,为了将其输入 git 还原,我做了:
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 .
提交消息。
我找不到合适的匹配项,但必须有更短的方法...假设我们有一个项目的子树,选择 one at random here 作为本地存储库,并且我想回到 12 月 11 日的修订版 6b6e73b3e77176a8a80ae01a1844914102728acd,即撤消上面的六个(在撰写本文时)提交。通过阅读文档,我知道我可以做到:
git revert commit1 commit2 commit3 commit4 commit5 commit6
但肯定有更简单、更通用的方法,比如:
git revert HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
这给了我 "fatal: bad revision 'src/vs/editor/contrib/codelens'"。
当然,正在做:
git checkout 6b6e73b3e77176a8a80ae01a1844914102728acd \
src/vs/editor/contrib/codelens
为我提供给定目录所需的修订,但我想要一个 git 生成的还原日志以实现可追溯性等。
我已经试验并得出结论这不是一个好主意,但本着分享的精神,这就是我想出的。首先,要获得要还原的版本列表,我做了:
git log --first-parent --no-merges --pretty=format:"%h" \
HEAD...6b6e73b3e77176a8a80ae01a1844914102728acd .
所以,为了将其输入 git 还原,我做了:
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 .
提交消息。