Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git中将目录从另一个分支更新到我的分支_Git_Checkout - Fatal编程技术网

在git中将目录从另一个分支更新到我的分支

在git中将目录从另一个分支更新到我的分支,git,checkout,Git,Checkout,我有两个分支 分支机构A B分部 现在,在我的机器中,我只签出了branch-B。我需要一个来自origin/branch-a的文件夹,而不需要在我当前的回购中创建分支(实际上我正在进行自动化) 我试过这些 尝试1: branch-B$git还原--源branch-A文件夹-x 问题: 它给出了一个错误,因为我还没有在本地数据库中创建分支(分支-a) 尝试2: branch-B$git fetch`git remote show`&git checkout`git remote show`/br

我有两个分支

  • 分支机构A
  • B分部
  • 现在,在我的机器中,我只签出了branch-B。我需要一个来自origin/branch-a的文件夹,而不需要在我当前的回购中创建分支(实际上我正在进行自动化)

    我试过这些

    尝试1:
    branch-B$
    git还原--源branch-A文件夹-x

    问题: 它给出了一个错误,因为我还没有在本地数据库中创建分支(分支-a)

    尝试2:
    branch-B$
    git fetch`git remote show`&git checkout`git remote show`/branch-B folder-x

    这是可行的,但总是尝试获取所有文件(从第一个)

    在我的第二次尝试中,它总是尝试获取所有文件(可能会重置到分支B的头部)


    有没有办法单独对该文件夹进行更新?

    您可以使用checkout命令

    git checkout/--

    假设在
    branch-A
    中,您的
    folder-x
    直接位于根目录下,并且该
    folder-x
    承载
    file-x.txt
    ,则从远程
    branch-A
    中仅拉入
    file-x.txt
    的命令如下:

    首先执行提取

    git fetch

    然后签出文件

    git checkout origin/branch-A--folder-x/file-x.txt

    如果要签出整个目录


    git checkout origin/branch-A--folder-x

    这是否回答了您的问题?请注意,分支并不重要。重要的是承诺。您可以使用分支名称访问提交,但无需使用分支名称即可访问提交。任何名称都可以,例如
    origin/branch-A
    ,原始散列ID也可以(运行
    git rev parse origin/branch-A
    将名称转换为散列ID,但请注意,
    git restore
    已经在内部为您实现了这一点)。您可以在第二次尝试中找到相同的名称。它可以工作,但问题是它总是试图获取所有文件(我的意思是,类似重置的东西),而不检查分支B中的文件是否已经存在,或者它是否为HEAD版本。我不确定为什么它对您不起作用。它只签出我在命令中指定的文件/目录。它不应该把所有的东西都拉进去。不,抱歉搞混了。比如说,在分支B中,有目录X、Y、Z。我正在单独为X进行签出。这是意料之中的事。但是X中有N个文件。它总是试图获取X下的所有文件,即使这些文件在分支A和分支B中是相同的。希望你。明白我的意思了。简单地说,如果X目录下的文件被更改,它应该会更新。否则什么也不做