什么是保持在Git中未提交的本地更改实际的工作流程?(What is a practical wor

2019-07-29 01:43发布

我想要做的已经说明了这个问题 。 但我想解决一个实际和更通用的方式问题。 所以使用情况如下:

  • 我有几个文件的几个局部变化web.configcreateDb.sql或以任何其它
  • 我不希望提交这些文件,因为更改是针对我的本地机器只
  • 这些文件必须是版本控制的,而且变化是由相当往往对其中一些(特别是SQL脚本),所以我想接收这些文件的更新
  • 希望提交所有其他文件
  • 我希望能够做到这一点没有摩擦,在一个命令(使用豪华-git的,所以PowerShell是欢迎)

链接到的解决方案据说用git add -p ,这是不实际的 ,是令人厌烦的手工挑块所有的时间或可能有这样做的更方便的方法?

例如,下面的一个可以工作:

  • 如果将它们添加到索引,像之前过滤是在我的工作拷贝文件的能力git -add -A -EXCEPT web.config crateDb.sql 。 然后,我可以映射一个git别名这一点,仅此而已。
  • 如果有能力去申请藏匿。 我的意思是,除去包含在一个特定的藏匿从工作副本的修改。 因此,我将不得不这样做git stash -deapply每个之前提交,这也是好的。

这个问题是很常见的,这是奇怪的是,目前无解。 例如TortoiseSVN也有“忽略上提交”功能,Perforce公司允许这种类型的局部变化存储在一个单独的变更表,从不提交。

Answer 1:

你可以试着做下面的git的承诺之前:

git update-index --assume-unchanged web.config crateDb.sql

从git的帮助:

--assume-不变

--no-假设未发生变化

当指定这些标志,不更新记录的路径对象名称。 相反,这些选项设置和取消了“假定不变”对位的路径。 当“假设不变”位上的git停止检查可能的修改工作树中的文件,所以您需要手动取消设置,当你改变工作树文件的比特告诉饭桶。 与具有非常缓慢LSTAT(2)系统调用(如CIFS)文件系统的一个大项目时,这有时是有帮助的。

这个选项也可以用作粗文件级机制忽略跟踪文件提交的更改(类似于什么的.gitignore确实为未跟踪文件)。 Git会失败(正常)的情况下,它需要在提交合并时,修改此文件中的指标如; 因此,在案件的假设未跟踪文件被改变后的上行,则需要手动处理的情况。



文章来源: What is a practical workflow for keeping local changes uncommitted in git?