在工作树中使用未跟踪的编译工件切换分支

时间:2017-12-21 17:20:29

标签: git

假设我在branch-1上工作并编译。我的工作树在各种目录中填充了一堆二进制文件。

现在我想切换到branch-2,但在我的工作树中已经编译了二进制文件(具有与我的工作树完全相同的branch-2提交版本)。如果我只运行git checkout branch-2,那么二进制文件仍然在工作树中,这是一个令人困惑的情况,因为HEAD指向branch-2并且我有来自branch-one的二进制文件。

在保留编译文件的同时切换分支的最佳过程是什么,更确切地说:

  • 结帐branch-1并编译
  • checkout branch-2(不再有来自工作树中branch-1的二进制文件),编译一组新的二进制文件
  • 返回branch-1并重新开始处理branch-1二进制文件(无需重新编译)
  • 返回branch-2并重新开始处理branch-2 - 生成的库..

1 个答案:

答案 0 :(得分:1)

听起来你想要的是multiple worktrees

如果您不想在切换分支时重新编译,则需要将二进制文件存储在某处。将它们存储在Git某处可能不是一个好主意,因此它们应该存储在常规文件系统中;最简单的方法就是使用不同的目录树。

有几个原因将二进制文件存储在Git提交中并不是一个好主意(并且stashes是一种提交类型):

  • 它增加了存储库的大小,因为它不仅存储了二进制文件的当前版本,还存储了您提交的所有版本。如果你只是使用存储,并且你在使用git stash drop.gitignore来摆脱存储是一致的,那么Git垃圾收集器最终将清理旧的提交,但它们仍将是一段时间。将它们放在常规提交中会更糟糕:膨胀会永远存在,它们很容易与编译后的文件失去同步,如果有人想要它们,它们将是无用的为不同的平台编译你的程序。
  • 因此,将编译后的文件放在git status文件中是标准的。这样,Git会假装他们不在那里,并且他们不会妨碍.gitignore调用等等。但是,忽略文件的一部分意味着Git默认不会存储它们,所以如果您经常将已编译的文件存放在存储中,则可能不希望使用.gitignore
  • 将已编译的文件放在存储中而不是git stash中,意味着很容易将它们置于常规提交中。如果你小心的话,你可以避免这种情况,但这是一个容易犯的错误,一旦你做了,你就会遇到在常规提交中使用二进制文件的所有问题。

使用$('.hollow-form-01 form.wpcf7-form').on('wpcf7submit', function() { alert('submitted'); }); 的主要优点是它适用于2.6之前的Git版本。