【问题标题】:How to avoid Visual Studio rebuild after switching Git branches back and forth?来回切换 Git 分支后如何避免 Visual Studio 重建?
【发布时间】:2012-03-02 12:46:51
【问题描述】:

我使用 Git 进行源代码控制并使用 Visual Studio 2008 进行构建。主要是在一个分支(主分支)上构建。通常我需要进行代码审查并临时切换到另一个分支(开发)。我不构建我审查的代码,审查完成后我切换回原始分支:

  1. 在 master 上开发
  2. 提交所有内容(分支是干净的)
  3. 构建
  4. 转为开发
  5. 进行代码审查
  6. 切换为主
  7. 继续在master上开发
  8. build(重新编译许多文件,不仅是上一步修改过的文件)

如果 master 和 development 有一个文件的不同版本,则该文件的修改日期和时间会更新到在步骤 5 中切换分支后的签出时刻。这会导致 Visual Studio 在步骤 8 中重建它们,尽管事实上那个源代码没有改变。

更改分支时如何避免大规模重建?

【问题讨论】:

标签: visual-studio git last-modified building


【解决方案1】:

作为一种解决方法,在与开发克隆不同的克隆中进行代码审查可能对您有用。这样一来,切换到审查分支不会更改主克隆中的文件,这不会导致 VS 不必要地重建它们。

【讨论】:

  • 感谢您的建议,但我的存储库很大——超过 3GB。我想避免浪费空间。
  • 本地计算机上的 git clone 在可能的情况下默认硬链接文件,因此克隆可能在您的磁盘上占用不到 3GB 的空间。
【解决方案2】:

您可以编写一个只检出不同文件的脚本。所以不要进行真正的结帐,而是将工作目录更改为看起来像另一个分支。

【讨论】:

  • 听起来是一个相当复杂的脚本。这就像重新实现保留修改时间的结帐功能一样。或者我可以做得更简单吗?现有脚本?
  • Git 是否真的存储了修改时间,还是我必须在这样的脚本中手动保存它们?
  • 这不是一个复杂的脚本。您可以从 git diff --stat 获取文件列表
  • 感谢您的提示。我会尝试写一个。
  • 谢谢。我还没有编写该工具,但我想这是我能得到的最佳答案。
【解决方案3】:

git worktree 有效。它让您无需切换即可处理多个分支。

【讨论】:

  • 你能解释一下如何使用git workitree来修复原帖问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 2017-04-07
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
相关资源
最近更新 更多