如何在项目中“--assume-unchanged”文件?

时间:2018-06-01 08:42:48

标签: git git-assume-unchanged

我有配置文件:conf/local.conf我为它运行下一个命令:

git update-index --assume-unchanged local.conf

并且可以切换到另一个分支或拉动。

如何在分支之间保留--assume-unchanged标志?

UPD
即将发生的一些例子:

$ git checkout 296-ToS-component 
error: Your local changes to the following files would be overwritten by checkout:
    conf/local.conf
Please commit your changes or stash them before you switch branches.
Aborting
$ git checkout -f 296-ToS-component 
error: Entry 'conf/local.conf' not uptodate. Cannot merge.

我希望它可以作为下一个:

  1. conf / local.conf已保存
  2. 分支已切换
  3. conf / local.conf已替换为已保存的版本

2 个答案:

答案 0 :(得分:1)

不要使用--assume-unchanged应该用于大型文件的性能问题而不会更改,并且在执行git status时散列成本很高。

你想要的是--skip-worktree做几乎相同的事情,但是处理你改变但不想提交的文件。

请参阅https://stackoverflow.com/a/13631525/717372

它可能(不确定,但是嘿!,那是你必须做的......)解决你的问题......

答案 1 :(得分:0)

删除假设未更改的位:

git update-index --no-assume-unchanged local.conf

保存:

git stash

切换分支:

git checkout 296-ToS-component

检索保存的版本:

git show stash@{0}:local.conf > local.conf

或将保存的版本与当前版本合并:

git stash apply

可能存在可以手动解决的冲突。

设置假设未更改位:

git update-index --assume-unchanged local.conf