如何在远程更改后将本地工作目录带到任何 git 修订版而不考虑其分支?
How to take local working directory to any git revision irrespective of its branch after remote changes?
背景
我正在开发一个 phing 构建脚本,它将输入作为生产代码库需要采用的目标修订。我正在单独的 scratchpad 目录中准备相同的内容,然后覆盖生产代码库。
当前逻辑
- 在每次构建期间,我只是清空暂存器并在其中获取整个 git 存储库的全新克隆。
进行所需的修订 -
git 重置 --hard ${target.git_version}
我相信可以做一些更有效率的事情。我在想 -
找出哪个包含所需的提交,如 中所示(已尝试但无法与 git branch -r --contains <commit>
一起使用 - 看起来我遗漏了一些关于它的概念)。
找到分支后,仅克隆该特定分支。
然后我想到了-
仅获取所有分支名称,首先进入我的本地存储库(如果可能并且有意义的话)。
然后git branch --contains <commit>
.
也想到了——
- 遍历所有分支名称并检查它是否包含提交。
只需使用 git checkout ${target.git_version}
.
签出您想要的提交
为什么总是擦除和重新克隆,只需 fetch
然后 checkout
就足够了。
My script 'Phingit'我帮你做你想做的。
背景
我正在开发一个 phing 构建脚本,它将输入作为生产代码库需要采用的目标修订。我正在单独的 scratchpad 目录中准备相同的内容,然后覆盖生产代码库。
当前逻辑
- 在每次构建期间,我只是清空暂存器并在其中获取整个 git 存储库的全新克隆。
进行所需的修订 -
git 重置 --hard ${target.git_version}
我相信可以做一些更有效率的事情。我在想 -
找出哪个包含所需的提交,如 中所示(已尝试但无法与
git branch -r --contains <commit>
一起使用 - 看起来我遗漏了一些关于它的概念)。找到分支后,仅克隆该特定分支。
然后我想到了-
仅获取所有分支名称,首先进入我的本地存储库(如果可能并且有意义的话)。
然后
git branch --contains <commit>
.
也想到了——
- 遍历所有分支名称并检查它是否包含提交。
只需使用 git checkout ${target.git_version}
.
签出您想要的提交
为什么总是擦除和重新克隆,只需 fetch
然后 checkout
就足够了。
My script 'Phingit'我帮你做你想做的。