假设我在branch-1上工作并编译。我的工作树会在各种目录中填充一堆二进制文件。
现在我想切换到branch-2,但是在我的工作树中有编译的二进制文件(与我的工作树有完全相同版本的branch-2提交)。如果我只运行git checkout branch-2,二进制文件将保留在工作树中,这是一种令人困惑的情况,因为HEAD指向branch-2,而我的二进制文件来自branch-one。
更准确地说,在保存已编译的文件的同时,在分支之间切换的最佳过程是什么:
branch-1并编译branch-2 (不再在工作树中使用源自branch-1的二进制文件),编译一组新的二进制文件branch-1,重新启动branch-1二进制文件(无需重新编译)branch-2并重新启动branch-2-produced库的工作。发布于 2017-12-21 17:56:01
听起来你想要的是多工作树。
如果您不想在切换分支时重新编译,则需要将二进制文件存储在某个地方。在某个地方将它们存储在Git中可能不是一个好主意,所以应该将它们存储在常规的文件系统中;最简单的方法就是使用不同的目录树。
将二进制文件存储在Git提交中有几个原因--这不是一个好主意(而存储是提交的一种类型):
git stash pop或git stash drop来清除存储,那么Git垃圾收集器最终将清理旧的提交,但它们仍然存在一段时间。把它们定期提交更糟:膨胀会永远存在,它们很容易与编译的文件失去同步,如果有人想要为不同的平台编译你的程序,它们充其量也是无用的。.gitignore文件是标准的。这样,Git就会假装它们不存在,而且在git status调用时也不会妨碍它们。然而,忽略这些文件的一部分意味着Git在默认情况下不会将它们存储起来,所以如果您经常将编译过的文件存放在一个存储库中,那么您可能不想使用.gitignore。.gitignore中,这意味着很容易意外地将它们放入常规提交中。如果小心,您可以避免这种情况,但这是一个很容易犯的错误,一旦这样做,您就会遇到在常规提交中使用二进制文件的所有问题。为此使用git stash的主要优点是它可以在2.6之前的Git版本上工作。
https://stackoverflow.com/questions/47929851
复制相似问题