我确定这个标题相当模糊。我想知道git
中是否有某种方式告诉它你想要某个文件在分支之间移动时使用不同版本的文件,但总体来说是从存储库中.gitignored。
这是我的场景:我有一个我用git控制的Flash Builder项目(对于Flex应用程序)。 Flash Builder项目中的Flex应用程序会创建三个文件:.actionScriptProperties
,.flexProperties
和.project
。这些文件包含许多本地文件系统引用(源文件夹,输出文件夹等),所以我们自然会从我们的仓库中识别它们。
今天,我想在我的项目中使用一个新库,所以我创建了一个名为lib
的独立git分支,删除了旧版本的库并放入了新版本。不幸的是,这个Flex库信息存储在这三个点文件中的一个(不确定哪个随便)。因此,当我不得不在之前切换回第一个分支(master
)时,我收到编译错误,因为master
现在已链接到新库(这基本上否定了我为什么lib
首先)。
所以我想知道是否有任何方法让我继续.gitignore这些文件(所以我的其他开发人员没有得到它们),但告诉git我希望它使用某种本地“分支版本”所以我可以在不同的分支机构本地使用不同版本的文件。
答案 0 :(得分:1)
文件被忽略或者不被忽略。但是,您可以将文件提交到分支,即使它们被忽略;你只需要确保你不要在错误的分支上再次提交它们。
忽略主分支上的文件。
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设置。