1

我敢肯定这个标题相当晦涩。我想知道是否有某种方法git可以告诉它您希望某个文件在分支之间移动时使用不同版本的文件,但总体上是 .gitignored 从存储库中。

这是我的场景:我有一个使用 git 控制的 Flash Builder 项目(用于 Flex 应用程序)。Flash Builder 项目中的 Flex 应用程序创建三个文件: .actionScriptProperties.flexProperties.project. 这些文件包含大量本地文件系统引用(源文件夹、输出文件夹等),因此我们自然而然地从我们的 repo 中将它们 .gitignore。

今天,我想在我的项目中使用一个新的库,所以我做了一个单独的 git 分支,名为lib,删除了旧版本的库并放入了新的库。不幸的是,这个 Flex 库信息存储在这三个点文件之一中(不确定是哪个临时文件)。因此,当我必须master早先切换回第一个分支(masterlib

所以我想知道是否有任何方法让我继续 .gitignore 这些文件(所以我的其他开发人员没有得到它们),但告诉 git 我希望它使用某种本地“分支版本”,所以我可以在本地为不同的分支使用不同版本的文件。

4

1 回答 1

1

TL;博士

文件要么被忽略,要么不被忽略。但是,即使文件被忽略,您也可以将文件提交到分支;你只需要确保你不会在错误的分支上再次提交它们。

选项

  1. 如果您想在 git 下维护修订,但在单独的项目中,您可能能够使用子模块或子树合并。
  2. 使用 RCS 对 Git 忽略的文件进行版本控制。小心 git-clean;如果您删除了*,v文件,您将丢失 RCS 修订历史记录。
  3. 保留一个只包含您的自定义文件的分支,并定期将忽略的文件合并到您的工作树中

选项 3,详细

忽略 master 分支上的文件。

git checkout master
cat << EOF >> .gitignore
.actionScriptProperties
.flexProperties
.project
EOF
git add .gitignore
git commit .gitignore

创建一个空分支来保存您的配置文件。

git symbolic-ref HEAD refs/heads/flexconfig
rm .git/index 
git clean -fdx
touch .actionScriptProperties .flexProperties .project
git add .
git commit

将您忽略的文件合并到您的主分支中,但忽略它们。

git checkout master
git merge --no-ff flexconfig

如果git status此时运行,它将显示一个干净的工作树,但实际上您的工作树中有 Flex 点文件。只是不要使用git add .或类似的,因为这会覆盖你的 .gitignore 设置。

于 2012-06-12T22:27:53.460 回答