忽略推送目录,但仍在Git中跟踪

时间:2011-02-11 00:49:09

标签: git tracking

远程推送时有没有办法忽略目录?问题是我不想忽视它。我仍然想跟踪目录,并为它提供本地提交和分支。说,我正在开发一个依赖于数据库的项目。该项目没有过渡模式或任何东西。它填充了测试数据。我有一个MySQL的文件夹/文件(MyISAM MYD / MYI)的符号链接到我的本地存储库。我希望数据库和提交同步,但不能推送数据库(或资产等)。我尝试了一个子模块,没有用 - 父级repo忽略了子子模块的更改。我该怎么做?示例结构:

/ repo / my-project< - git repo
/ repo / my-project / src< - 将与此部分相关的提交提交到使用它作为根目录的远程仓库

/ repo / my-project / mysql< - 跟踪这些但不要推它们 /repo/my-project/mysql/db_1/table_1.frm
/repo/my-project/mysql/db_1/table_1.MYD
/repo/my-project/mysql/db_1/table_1.MYI

谢谢!

3 个答案:

答案 0 :(得分:1)

通过将文件添加到.gitignore文件中,可以忽略包含到存储库的文件 - 但我认为这不是你想要的。

试试这个:http://book.git-scm.com/4_ignoring_files.html

答案 1 :(得分:1)

当您推送给定分支时,您将推送该分支上的提交。如果这些提交包含给定目录的内容,您将推送该内容。

您的两个选择是:

  • 将该目录保存在从未合并到您推送的分支中的分支(或分支)上。当然,您仍然可以自由地将其他更改合并到该分支中。

  • 将该目录保存在单独的存储库中。最简单的方法是将该目录符号链接到存储库的实际位置,并忽略该路径。 (您可以在.git/info/excludes中忽略它,以避免发布gitignore条目。)更详细的说明:

    cd path/to/project
    
    # move the directory outside your project
    mv database-dir ..
    
    # add an ignored symlink to it
    echo "database-dir" >> .git/info/excludes
    ln -s ../database-dir database-dir
    
    # create a new repo in the directory to track it
    cd ../database-dir
    git init; git add .; git commit
    

答案 2 :(得分:0)

为什么不在没有远程分支的单独存储库中跟踪数据库?

(请注意,如果您从不远程推送,如果您的硬盘发生故障,您将无法进行备份。)