我想要做的就是在that question中描述的。但我想以实际和更通用的方式解决这个问题。用例如下:
web.config
,createDb.sql
或其他任何文件中有几个本地更改链接到解决方案说使用git add -p
并且这是不实际的,一直手动选择块或者可能有更方便的方法吗?
例如,以下之一可以工作:
git -add -A -EXCEPT web.config crateDb.sql
一样。然后我可以将git别名映射到那个,就是这样。git stash -deapply
的事情,这也很好。问题非常普遍,目前还没有解决方案,这很奇怪。例如。 TortoiseSVN具有“忽略提交”功能,Perforce允许将该类型的本地更改存储在单独的更改列表中,并且永远不会提交它。
您可以在git提交之前尝试执行以下操作:
git update-index --assume-unchanged web.config crateDb.sql
从git帮助:
--assume-不变
--no-假设未发生变化
指定这些标志时,不会更新为路径记录的对象名称。相反,这些选项设置和取消设置路径的“假定未更改”位。当“假定未更改”位打开时,git停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以在更改工作树文件时告诉git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时是有用的。
此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件的更改)。如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。