2012-06-20 240 views
3

我用git-svn克隆了一个远程SVN仓库。我已经以代码编译的方式修改了这个克隆的repo中的pom.xml文件。这个设置对我来说是专属的。因此,我不想将这些更改推回远程回购。如何永久禁止在git中提交文件的特定部分?

是否有办法防止这种情况(部分)的文件被提交到回购的变化?我知道这个事实,我可以使用个人分支,但这意味着某些合并开销。有其他方法吗?

我看着这个questionone,但它们对于相当时间的变化。

更新:我也知道的的.gitignore可能性,但是这将意味着完全排除的文件。

+1

这是不可能忽略一个文件 – CharlesB

+0

只有部分也许你应该拆分XML文件成包含你的专属位user_pom.xml?听起来像你的团队成员,如果有的话,会有同样的问题。 或者,您可以跟踪包含非独占数据的pom.default.xml文件,并让git忽略您自定义的pom.xml文件。 – mlatu

回答

2

编辑:你问什么是不可能的,我没有看到“局部”的一部分。 我知道你可以只提交部分文件,但你不能忽略文件的某些部分。 您需要使用update-index技巧以避免在“状态”中出现该问题,并且每次从远程进行重新绑定/合并时都需要存储该文件,然后取消修改并忽略修改并更新-指数。 我不知道你是否可以为一系列git命令创建一个git别名,所以用一个命令你可以执行所有这3个命令来避免使用.gitignore文件,而不要推动它远程回购太:Ignore the .gitignore file itself

在你的.gitignore

,你应该有

.gitignore 
path/to/pom.xml 

.gitignore文件以可在工作树的根,或任何你想要的子目录/需要

+2

他只想忽略部分文件 – Shahbaz

1

可能有一个可能与过滤器。但是这需要更多的探索。

起点:实现涂抹/清洁此过滤器:

git config --global filter.versionUpdate.smudge 'sed "s/<version>14.5.0<\/version>/<version>14.5.FEATURE-15<\/version>/"' 
git config --global filter.versionUpdate.clean 'sed "s/<version>FEATURE-15<\/version>/<version>14.5.0<\/version>/"' 

通过这种方式,进行比较时,由于应用过滤器的文件始终是相同的。

问题:仍然需要调查如何找回过滤的文件。这在工作目录中并不明显。

Smudge clean filter