假设我检查了我的"主"分支.我已经对"master"进行了一些生产更改,现在我想将我的"实验"分支改为最新的master.但是,我想在不修改工作副本中的任何文件的情况下执行此操作.从本质上讲,我希望所有的魔法都发生在.git目录中,而不需要触及工作副本.
如果不是"不要修改我的工作副本"要求,这只是一个问题:
# current branch is master
git checkout experimental
git rebase master
git checkout master
Run Code Online (Sandbox Code Playgroud)
我真正的问题是,这会修改我的工作副本中的时间戳,即使我通过查看与我开始的完全相同的内容结束.一旦我运行"git checkout experimental",任何包含实验分支中的更改的文件都会将其mtime设置为当前时间 - 因此,自上次重新实验以来,在master中更改的所有文件也是如此.因为mtimes已经改变了,所以像构建工具这样的东西会让人觉得他们需要再做一些工作,即使在我完成时,文件的内容实际上并没有改变.(就我而言,如果项目文件的时间戳发生变化,Visual Studio认为需要花费大量时间来卸载和重新加载项目.)我想避免这种情况.
有没有办法一步完成上述所有操作,而无需修改工作副本中的任何内容 (假设在rebase期间没有冲突)?
(如果有冲突,我更倾向于将显示该错误,然后中止整个操作,而不用修改任何时间戳但是,这只是我的偏好,而不是硬性要求-我不知道什么是一切皆有可能.)
当然我可以编写一个脚本来捕获mtimes,运行git,然后重置mtimes; 但似乎Git已经有办法在没有打扰工作副本的情况下执行rebase这样的事情,因为rebase实际上是关于增量,而不是文件的实际内容.
我使用 Git 进行源代码控制并使用 Visual Studio 2008 进行构建。我主要在一个分支(主)上构建。我经常需要进行代码审查并临时切换到另一个分支(开发)。我不构建我审查的代码,审查完成后我切换回原始分支:
如果 master 和 develop 具有不同版本的一个文件,则该文件的修改日期和时间将更新到第 5 步切换分支后签出的那一刻。这会导致 Visual Studio 在第 8 步中重建它们,尽管源代码没有改变。
更改分支时如何避免大规模重建?