eclipse - Git check out 多个同名文件

标签 eclipse git

我从一个包含多个 eclipse 项目的大项目的其他几个分支 merge ,最终更改了一堆 org.eclipse.jdt.core.prefs 设置,我想在我的分支上恢复这些设置。在我的 git 存储库中的所有 eclipse 项目中,是否有我可以使用的魔法命令来“重置”这些文件?

我尝试了一些类似的东西

git checkout origin/BRANCH_WITH_CORRECT_FILES -- *org.eclipse.jdt.core.prefs

返回

error: pathspec '*org.eclipse.jdt.core.prefs' did not match any file(s) known to git.

这是因为*吗?我该如何绕过它?

最佳答案

问题的起因是 git checkout不在子目录中搜索。要使用星号 check out 文件,您必须指定 git 可以找到它们的文件夹。

尽管如此,无论它们在存储库中的位置如何,都可以 check out 名称中包含特定字符串的所有文件。为此,我们必须结合使用一些命令。

git ls-tree -r --name-only <branch> | grep <pattern>

这将返回名称中具有给定模式的所有文件的列表;我们将此命令的输出传递给 git checkout这将相应地更新工作树。

git checkout <branch> -- $(git ls-tree -r --name-only <branch> | grep <pattern>)

魔术完成了。


为了更容易使用,我建议在您的全局 gitconfig 中创建一个别名。

git config --global alias.super-checkout '!f() { git checkout $1 -- $(git ls-tree -r --name-only $1 | grep "$2"); }; f'

在此之后,您可以使用带有 git super-checkout <branch> <pattern> 的命令,或者在您的情况下:

git super-checkout origin/BRANCH_WITH_CORRECT_FILES org.eclipse.jdt.core.prefs

注意:您显然可以使用与 super-checkout 不同的别名.


看看 git ls-tree documentation以便更好地理解。

关于eclipse - Git check out 多个同名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442311/

相关文章:

eclipse - Eclipse Luna的速度编辑器插件

java - 使 jar 在 32 位 jre 中运行

java - 如何覆盖 Eclipse 中的默认 JVM 参数?

xcode - Xcode4的版本控制如何使用Github

linux - 在ubuntu上安装Eclipse

eclipse - 在 Eclipse 中调试时不显示变量

android - 在 Eclipse : no gen source folder? 中导入现有的 Android 项目

git - 什么不应该包含在 flutter 应用程序的公共(public) repo 中

git - 从gitorious导入到github?

git - 如何在postgresql中存储类似git分支的数据结构?