首页 > 解决方案 > 保留来自不同分支的文件变体的本地版本

问题描述

我对 Github 很陌生。

我有一个正在开发的脚本,其中一些变量的值不同,在某些情况下还有代码变体。

git checkout master我发现如果我有一个 master 分支和另一个分支,如果我打开了一个 cmd 窗口,我可以在一个分支中的脚本版本和另一个分支 ( , )之间来回切换git checkout alternatebranch。我的资源管理器中的文件是同一个文件,我有一组存储库文件,但根据我在本地的分支,我有不同的可见代码,基于主分支或替代分支中的工作以及我是否“指向”到一个分支或另一个。

如果我想同时运行脚本版本(比如在不同 IDE 实例中的 Python 中),我如何使用 github 文件来管理它?

我正在开发 ia Windows 7 环境,脚本在 Python 2.7 中,我正在使用 Spyder IDE。

提前致谢。

标签: git

解决方案


简短的回答是 Git 不会在这里直接帮助您——但请参见git worktree add下文。

如果您的程序读取和/或写入./control.info从您的工作树命名的文件,则其内容./control.info取决于您的操作系统和程序。当你告诉它这样做时,Git 只会将内容写入工作树,或者从工作树中读取内容——Git 的所有文件都以特殊的压缩格式存储,在存储库中是只读的,并且是读/写的在 Git 的索引中。

Git 从索引中的任何内容进行新的提交。当你git add在一个文件上使用时,你告诉 Git 将文件从工作树(它具有普通文件的正常未压缩格式)复制到索引中,并将其压缩为特殊的 Git-only 格式。当你使用 时git commit,你告诉 Git 将索引打包成一个永久的提交,你的名字是作者和提交者,等等。

当您运行时git checkout <commit>,Git 会确定索引中哪些文件必须更改,并且作为额外的副作用,在工作树中,以便从您现在拥有的任何提交切换到给定的<commit>. Git 会将更新的文件写入它的索引(这非常快),同时写入工作树(有点慢),现在你有了非 Git 程序可以使用的格式的文件。

Git 自 2.5 版以来确实提供了一个新命令 ,git worktree它可以将额外的工作树添加到一个(共享)存储库。使用这个技巧,您可以在 branch 的尖端签出master一个工作树,并在一个单独的位置签出一个单独的工作树,在 branch 的尖端签出alternatebranch

git checkout master
git worktree add /C/path/to/different/dir/project alternatebranch

例如。

自从它进入以来,已经有一些修复git worktree,但最大的是 Git 2.6,所以 2.6 或更高版本最适合使用git worktree.


推荐阅读