Git 如何确保主分支不会因新分支被忽略文件的更改而更改?

Git 如何确保主分支不会因新分支被忽略文件的更改而更改?,git,github,Git,Github,许多文件是在程序运行期间生成的,并且非常大 我将这些文件路径添加到.gitignore文件中。当我需要进行一些新的更改时,我会创建一个新分支,对新分支进行更改,然后运行新分支以确定我的更改是否合理 让我们假设我犯了一个错误,我想把它恢复过来。我运行了git reset来恢复它,但我发现它仍然无法运行,因为我在设置中忽略的一些文件发生了更改。我想切换回主分支,删除这个新分支,然后重新开始。但是我发现主分支不能再运行了。如何将它们设置为互不影响?如果文件被忽略,并且它还不是索引的一部分,git将不会

许多文件是在程序运行期间生成的,并且非常大

我将这些文件路径添加到
.gitignore
文件中。当我需要进行一些新的更改时,我会创建一个新分支,对新分支进行更改,然后运行新分支以确定我的更改是否合理


让我们假设我犯了一个错误,我想把它恢复过来。我运行了
git reset
来恢复它,但我发现它仍然无法运行,因为我在设置中忽略的一些文件发生了更改。我想切换回主分支,删除这个新分支,然后重新开始。但是我发现主分支不能再运行了。如何将它们设置为互不影响?

如果文件被忽略,并且它还不是索引的一部分,git将不会跟踪它

假设您想忽略非常大的文件.out,那么您可以将其添加到
.gitignore
。因为您忽略了它,所以当您在
master
和您的分支之间来回切换时,该文件不会更新。您提到您运行了一个
git reset
。该命令对文件
非常大的文件.out没有影响,因为它被忽略了

在您询问的评论中:

在切换分支时,它们可以相互独立吗

答案是,既然您忽略了它们,git就不会对它们做任何事情你必须做点什么才能实现这一点。我想到了两种方法:

  • 在子文件夹中创建那些非常大的文件,例如
    output/master/
    output/mybranch
    并忽略这些文件夹
  • 切换分支时删除并重新创建这些文件
  • 这只是我在不了解您的应用程序的情况下想到的两种方法。我相信,由于这些文件是您的应用程序,因此您可以提供其他解决方案或想法来处理这些文件

    你必须记住的重要一点是,既然你忽略了这些文件,git就不会去碰它们。因此,无论您在切换分支后需要对它们做什么,您都必须自己执行操作,而不是依赖git

    git中有一个叫做的东西可以帮助您在某些事件发生时运行脚本,比如在提交之后、推送之前等等。也许这些钩子中的一个可以帮助您自动操作这些文件


    此外,您还可以查看
    git lfs
    (),它允许跟踪这些文件,而不会使存储库失控。但是,在使用
    git lfs
    之前,您应该先问问自己这些文件是否需要在存储库中。既然您说这些非常大的文件是运行应用程序的输出,我的第一个猜测是您可能应该忽略它们。

    您对git说的任何话都不会对您告诉git忽略的文件产生任何影响。它忽略了它们。它没有记录他们以前的状态。您已经告诉git将这些文件完全放在您的手中,这就是git所做的。这完全取决于你自己。您可以清空工作树并签出
    master
    或任何东西,但是这些“生成的”文件将丢失,处理这些文件将完全由您决定。我知道。但我想知道是否有任何方法可以在提交时忽略它们。但是,在切换分支时,它们可以相互独立吗?不,它们不能相互独立,原因很简单,除非您开始为单独的分支添加单独的工作树,否则您只有这些文件的一个副本,并且由于您要求git忽略它们,git会忽略它们。当您切换回主分支时,在这些文件中从您的第二分支留下的任何内容仍将存在。您可能希望查看
    git worktree
    命令,或者养成在切换分支时删除未跟踪文件的习惯。