【问题标题】:git is telling me to commit or stash changes to excluded file using --skip-worktree when trying to checkout to new branchgit 告诉我在尝试签出到新分支时使用 --skip-worktree 提交或存储对排除文件的更改
【发布时间】:2020-03-19 04:29:53
【问题描述】:

我有一些文件被排除在 git 更改之外。
我可以在本地更改文件,并且更改未显示在git status中。

但是,如果我尝试压缩分支或尝试签出到新分支,它不允许我这样做,而无需提交对这些文件的更改。

如何管理这些文件?

【问题讨论】:

    标签: git


    【解决方案1】:

    或者,尝试签出到新分支,它不允许我这样做,而不提交对这些文件的更改。

    这就是为什么 Git 2.25.1(2020 年 2 月)现在包含在 git update-index 中的原因:

    用户经常尝试使用假设不变和跳过工作树位来告诉 Git 忽略对跟踪文件的更改。

    这不能按预期工作,因为 Git 仍可能检查工作树文件 执行某些操作时的索引。
    一般来说,Git 不提供忽略跟踪文件更改的方法,因此建议使用替代解决方案。

    例如,如果您要更改的文件是某种配置文件,则存储库可以包含一个示例配置文件,然后可以将其复制到忽略的名称中并进行修改。
    存储库甚至可以包含一个脚本,将示例文件视为模板,自动修改和复制它。

    我引用了content filter driver based on smudge/clean scripts 中的最后一部分。

    【讨论】:

    • 不幸的是,拥有示例文件并复制它不是我的选择,因为该文件需要由其他成员更改和推送。
    • @priosshrsth 内容过滤驱动意味着你有一个私有文件生成,而官方文件(不同名称)仍然可以更改和推送。
    【解决方案2】:

    我假设这些文件是一些配置文件。我建议采用以下方法。让 Git 知道这些变化:

    git update-index --no-skip-worktree EACH_FILE 
    

    隐藏这些更改:

    git stash save "Save local conf"
    

    您现在可以毫无问题地签出到另一个分支,然后恢复您的本地更改:

    git stash pop
    

    您可以修复冲突(如果有),接受本地更改。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 2013-06-07
      • 2017-11-04
      • 2021-03-24
      • 2018-05-14
      • 1970-01-01
      • 2011-04-14
      • 2016-12-20
      • 2011-01-03
      相关资源
      最近更新 更多