Git仅从分支目录签出新文件

Git仅从分支目录签出新文件,git,git-checkout,Git,Git Checkout,我有这样的情况。 一个开发人员正在./model目录中工作,他正在向其中添加新文件,然后提交新的model\u文件并推送到origin/master 现在,第二个开发人员也在同一目录中编写模型。/model(在他自己的工作目录中) 假设开发人员创建这样的模型: ./model/m1.php ./model/m2.php ./model/m3.php ./model/m4.php 现在开发人员B创建这样的模型: ./model/m1.php ./model/m2.php ./model/m3

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

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

假设开发人员创建这样的模型:

./model/m1.php
./model/m2.php
./model/m3.php
./model/m4.php
现在开发人员B创建这样的模型:

./model/m1.php
./model/m2.php
./model/m3.php
./model/m4.php
假设开发人员A提交更改并推送到源代码/主代码,因为开发人员B的工作需要m1.php和m2.php模型

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

开发人员B如何检索文件夹./model中的新模型文件?只有开发人员A创建了该模型。 我在开发人员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
然后它工作,但这假设我必须知道我需要从这个分支签出的详细文件名


有人能帮我吗?谢谢。

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

git fetch origin
git merge origin/master

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

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

git fetch origin
git merge origin/master
为此,您必须首先在计算机B中提交或转移本地更改。

开发人员B应该运行

  • 吉特储藏
  • git拉源主机
  • 吉特藏匿申请
  • 第1行隐藏开发人员的工作,以便在执行拉操作之前,他们的分支不受更改

    第2行从远程服务器上的主目录执行提取和合并。这将得到开发人员A的更改

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

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

    Developer B应该运行

  • 吉特储藏
  • git拉源主机
  • 吉特藏匿申请
  • 第1行隐藏开发人员的工作,以便在执行拉操作之前,他们的分支不受更改

    第2行从远程服务器上的主目录执行提取和合并。这将得到开发人员A的更改

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


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

    我明白了。除了最后的这个“*”之外,几乎所有的事情都还可以

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

    git fetch origin
    git checkout origin/master model/
    

    我想出来了。除了最后的这个“*”之外,几乎所有的事情都还可以

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

    git fetch origin
    git checkout origin/master model/
    
    你的外壳膨胀了

    git签出源/主/模型/*

    在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/
    
    你的外壳膨胀了

    git签出源/主/模型/*

    在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/
    

    也许这会有帮助:[单文件git][1][1]:它可以工作,但我必须详细了解新的文件名。出于好奇,你为什么不为此使用分支?让开发人员A在他自己的m1m2分支上工作,那么开发人员B就可以在他的一端建立一个跟踪分支,然后拉m1m2并合并到他自己的分支m3m4中?我们刚刚学习git,现在我们对分支的信心很低。也许这会有帮助:[单文件git][1][1]:它可以工作,但我必须详细了解新文件名。出于好奇,你为什么不为此使用分支?让开发人员A在他自己的m1m2分支上工作,那么开发人员B可以在他那端建立一个跟踪分支,然后拉m1m2并合并到他自己的分支m3m4中?我们只是在学习git,现在我们对分支的信心很低。但是merge将在所有项目目录上工作,我们只需要在./model目录上。如果开发人员B合并所有项目目录,那么在我们的情况下将是灾难。但合并将在所有项目目录上工作,我们只希望在./model目录上工作。如果开发人员B合并所有项目目录,那么在我们的情况下将是一场灾难。git pull将给我带来来自其他项目目录的冲突,现在我们不打算合并一些文件夹。我们只想从这个目录中提取。/modelgit-pull将给我其他项目目录中的冲突,现在我们不打算合并一些文件夹。我们只想从这个目录中提取。/model