git - 保留来自不同分支的文件变体的本地版本
问题描述
我对 Github 很陌生。
我有一个正在开发的脚本,其中一些变量的值不同,在某些情况下还有代码变体。
git checkout master
我发现如果我有一个 master 分支和另一个分支,如果我打开了一个 cmd 窗口,我可以在一个分支中的脚本版本和另一个分支 ( , )之间来回切换git checkout alternatebranch
。我的资源管理器中的文件是同一个文件,我有一组存储库文件,但根据我在本地的分支,我有不同的可见代码,基于主分支或替代分支中的工作以及我是否“指向”到一个分支或另一个。
如果我想同时运行脚本版本(比如在不同 IDE 实例中的 Python 中),我如何使用 github 文件来管理它?
我正在开发 ia Windows 7 环境,脚本在 Python 2.7 中,我正在使用 Spyder IDE。
提前致谢。
解决方案
简短的回答是 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
.
推荐阅读
- java - 如何使用 Mockito 在单元测试中正确模拟队列操作?
- bash - 在 Windows 10 的 Ubuntu Bash 中安装 Usearch 时出现问题
- c++ - OpenGL/GLFW C++ 程序不绘制任何东西
- sql-server-2008 - SQL Server 2008:Executenonquery 不返回受影响的行数
- automapper - AutoMapper.Collection.EFCore - 配置期间抛出错误
- java - 组件异常
- r - 如何在 Shiny App 中显示表的列名而不用点替换空格并删除表名?
- python - 如何使用下面代码中的 for 循环获取三个导出的 png 文件?
- git - Git:如何查找何时将提交合并到主控中?
- spring - 照片分享应用系统设计