2

我有一个代码工作流程,它依赖于将开发机器上的 repo 克隆中的更改拉到 repo master 中,然后使用“git fetch”和“git merge”之类的东西在 prod 机器上更新该 repo master 的副本。

我遇到了一个问题,我已经提交了一些东西来掌握,但是由于代码冻结,这些更改从未被拉入 prod 机器。为了摆脱代码冻结,我需要更新一个也已提交给 master 的文件。

此时,生产机器都落后于主存储库,大约有 10 次提交。这只是我想拉入 prod 机器的最新提交。当我只需要一个文件快进时,“git fetch && git merge”将快进我的整个仓库。

挑选单个文件的最佳方法是什么?如果我“git checkout file.ext”那么它会从本地 repo 副本而不是更新的 master 更新。我想让我的本地副本“了解”该文件的最新版本,而无需更新其他所有内容。

我的想法是做一个“git fetch”来更新 repo,然后做一个“git checkout file.ext”来更新一个文件。这是做我想做的最好的方式吗?如果没有,有人可以建议我如何从许多 Git 提交中落后的主节点签出单个更新文件吗?

4

3 回答 3

3

尝试类似的东西

git fetch
git checkout master -- src/your/file.txt
于 2011-06-08T22:37:01.360 回答
1

您只需要在提交哈希之后引用该文件。要获得所需的哈希,您可以运行

git log remoteRepo/remotebranch

而不是包含要合并到本地存储库中的单个文件版本的提交的哈希。在你有了这个哈希而不是运行git fetch && git merge之后,你应该运行:

git fetch && git checkout <HASH> <PATH_TO_SINGLE_FILE>

现在你应该在你的工作分支中有更新的文件。

问候,勒内

于 2011-06-08T23:03:58.863 回答
0

注意:此解决方案不使用任何 git 特定命令。可能有一个 git 命令来完成所有这些工作。

在版本控制之外的某个地方复制更新的单个文件。
转到旧版本(生产机器所在的版本)。
将更新的单个文件复制回修订控制。
签入将创建一个新分支。
将新分支签出到生产机器。

于 2011-06-08T22:31:23.677 回答