现在第二个开发人员也在同一目录./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
然后它可以工作,但这假设我必须知道我需要从这个分支结账的exacly文件名。
有人可以帮我这个吗?感谢。
答案 0 :(得分:2)
开发者B应该运行
- git stash
- git pull origin master
- git stash apply
醇>
第1行存储开发人员的工作,因此在执行pull
之前,他们的分支没有变化第2行从远程主目录执行提取和合并。这将得到开发者A的更改。
第3行重新应用开发人员B对m3.php和m4.php文件的工作。
显然,在git中执行命令时不要包含数字。
答案 1 :(得分:1)
您需要将传入的更改合并到工作副本中。为了做到这一点,只需:
git fetch origin
git merge origin/master
为此,您必须先在计算机B中提交或暂存本地更改。
答案 2 :(得分:1)
我明白了。几乎一切都很好,除了最后的'*'。
将文件从远程分支下载到某个项目文件夹的正确方法,只将新文件添加到此文件夹:
git fetch origin
git checkout origin/master model/
答案 3 :(得分:0)
你的shell扩展
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.php
和model/m3.php
的错误。告诉shell不要扩展你的*
,比如
git checkout origin/master './model/*'
似乎有效,或者只是按照其他解决方案使用显式路径,例如
git checkout origin/master model/