1

我有这样的情况。一位开发人员正在 ./model 目录中工作,他正在向其中添加新文件,然后提交新的 model_files 并推送到 origin/master

现在第二个开发人员也在同一目录 ./model (在他自己的工作目录中)中编写模型。

假设开发者 A 创建了这样的模型:

./model/m1.php
./model/m2.php

现在开发者 B 创建了这样的模型:

./model/m3.php
./model/m4.php

假设开发人员 A 提交更改并推送到 origin/master,因为开发人员 B 需要 m1.php 和 m2.php 模型来完成他的工作。

开发人员 B 还在项目中创建了许多其他更改/文件夹/文件,不仅在 ./models 目录中,而且他的工作还没有完成。如果他合并或拉动,那么他的工作就会丢失。

开发人员 B 如何仅检索开发人员 A 创建的文件夹 ./model 中的新模型文件。我在开发人员 B 机器上尝试过这样的事情。我假设开发人员 B 没有提交 m3.php 和 m4.php 因为还没有以这些文件结束。他只需要在 ./models 目录中有来自开发人员 A 的新文件(m1.php 和 m2.php)。在开发人员 B 机器上,我尝试了:

git fetch origin
git checkout origin/master ./model/*

但不幸的是,错误给了我

error: pathspec 'model/m3.php' did not match any file(s) known to git.
error: pathspec 'model/m4.php' did not match any file(s) known to git.

但如果我执行:

git checkout origin/master ./model/m1.php ./model/m2.php

然后它可以工作,但这假设我必须知道我需要从这个分支签出的确切文件名。

有人可以帮我吗?谢谢。

4

4 回答 4

3

开发人员 B 应该运行

  1. 混帐藏匿
  2. git pull 起源大师
  3. git 存储应用

第 1 行隐藏了开发人员的工作,因此他们的分支在执行拉取之前没有更改

第 2 行从远程的主目录执行获取和合并。这将获得开发人员 A 的更改。

第 3 行重新应用了开发人员 B 在 m3.php 和 m4.php 文件上的工作。

显然,在 git 中执行命令时不要包含数字。

于 2013-02-13T10:31:18.633 回答
3

我想到了。除了最后的“*”之外,几乎一切都很好。

将文件从远程分支下载到某个项目文件夹的正确方法仅将新文件添加到该文件夹​​:

git fetch origin
git checkout origin/master model/
于 2013-02-13T11:28:37.660 回答
1

您需要将传入的更改合并到您的工作副本中。为此,只需:

git fetch origin
git merge origin/master

为此,您必须首先在计算机 B 中提交或暂存本地更改。

于 2013-02-13T10:30:22.480 回答
1

你的外壳膨胀了

git checkout origin/master ./model/*

在 git 看到它之前。它可能正在扩展到

git checkout origin/master ./model/m1.php ./model/m2.php ./model/m3.php ./model/m4.php

然后你从 git 中得到错误,master它缺少model/m3.phpmodel/m3.php. 告诉外壳不要扩展你的*,比如

git checkout origin/master './model/*'

似乎可以工作,或者只是按照其他解决方案使用显式路径,例如

git checkout origin/master model/
于 2014-04-17T14:46:01.010 回答