是否可以在git中取消对文件的跟踪,而不在远程服务器中删除该文件

是否可以在git中取消对文件的跟踪,而不在远程服务器中删除该文件,git,Git,在使用git时,我希望有以下内容,但不确定是否可能: 我有results.log文件,其中记录了程序执行结果(附加在后续执行中) main.conf包括results.log所在的位置 在git中保持results.log文件为空,并在main.conf中为其添加一个相对路径,这样当项目签出时,同事可以立即启动程序并获得结果 启动后,应跟踪该文件,这样它就不会与应用程序生成的数据一起提交 我认为以下一系列行动会奏效: 添加一个空文件 承诺,推到原点 将文件添加到git ignore 但是

在使用git时,我希望有以下内容,但不确定是否可能:

  • 我有
    results.log
    文件,其中记录了程序执行结果(附加在后续执行中)
  • main.conf
    包括
    results.log
    所在的位置
  • 在git中保持
    results.log
    文件为空,并在
    main.conf
    中为其添加一个相对路径,这样当项目签出时,同事可以立即启动程序并获得结果
  • 启动后,应跟踪该文件,这样它就不会与应用程序生成的数据一起提交
我认为以下一系列行动会奏效:

  • 添加一个空文件
  • 承诺,推到原点
  • 将文件添加到git ignore
但是在这些步骤之后,文件仍然被跟踪(因为它位于索引树中)
git rm--cached
在执行
push
时将其从源位置完全删除

问题:我想要的是可能的吗?如果可能的话,怎么做?

添加一个

git reset --soft results.log
这确保了文件永远不会提交,但有两个警告:

  • 它将始终显示为
    git status
    下的“要提交的更改”。可能有点烦人
  • 您需要确保每个开发人员都安装相同的钩子,以避免提交日志。可能真的很烦人

  • 公平地说,根据定义,您想要的是一个黑客:您希望git跟踪此文件,以便每个开发人员都拥有它,但您不希望git跟踪它,因为每个开发人员都有不同的文件内容。不会有“干净”的解决方案(除了我对您的问题的评论)。

    听起来您的应用程序应该只创建一个空的
    结果。如果找不到文件,则记录
    。那么你就不必在git中破解它,也可以停止跟踪它。是的,这是可能的,但是我在多种情况下都遇到了这种需要。在我看来,这种方法可以加快应用程序的安装和初始运行,而无需编写任何代码。我们在这里讨论了其他问题,但如果删除空文件导致应用程序停止工作,这是一个缺陷。让应用程序进入可运行状态不应该是VCS的责任。您可能需要一个安装脚本,或者应用程序应该以某种方式进行自我配置。谢谢您,确认这是不可能的,以及为什么最好保持这种方式非常好!:)