我正在使用git svn
将我的本地git存储库中的更改合并到SVN服务器。但是,当我发出git svn dcommit
时,它实际上会提交我的源代码树中的任何.gitignore文件。这甚至在我在本地检出SVN存储库(使用SVN)之后,设置svn:ignore属性(递归地,将.gitignore列为要忽略的文件之一),然后将该属性更改直接提交给SVN。 / p>
这是预期的行为吗?一个bug?有没有人知道要将.gitignore保留在SVN之外?
我只知道我的团队中的一个非git用户将会看到这些文件并开始删除它们,然后下次我去rebase/dcommit
时,许多不需要的文件将在SVN中结束。
答案 0 :(得分:9)
您可以使用Git的特定于repo的“排除”文件,而不是使用.gitignore
文件。 “exclude”文件驻留在$GIT_DIR/info/exclude
(其中$GIT_DIR
是Git存储库目录,通常为.git
)。此文件的格式与.gitignore文件的格式完全相同。不同之处在于这是特定于存储库的文件 - 它只存在于您的存储库中。它不会传播到任何其他存储库(例如,通过git clone
或git svn dcommit
)。
无法从SVN仓库中省略.gitignore
个文件,但请将它们保存在Git中。任何尝试这样做都会导致您的本地提交与git-svn从SVN服务器检索的提交不匹配。换句话说,您的本地存储库的历史记录将无法与SVN的历史记录进行协调;它们永远不会同步。