【问题标题】:Update directory from another branch to my branch in git在 git 中将目录从另一个分支更新到我的分支
【发布时间】:2021-06-28 22:21:32
【问题描述】:

我有两个分支。

  1. 分支-A
  2. 分支-B

现在,在我的机器上,我只签出了分支-B。我需要一个来自 origin/branch-A 的文件夹,而无需在我当前的 repo 中创建一个分支(实际上我正在做一个自动化)

我试过这些。

尝试 1:
分支-B $git restore --source branch-A folder-x
问题: 它给出了错误,因为我没有在我的本地创建一个分支(分支-A)

尝试 2:
分支-B $git fetch `git remote show` && git checkout `git remote show`/branch-B folder-x
这可行,但总是试图获取所有文件(从第一个开始)。

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

有没有办法单独更新那个文件夹?

【问题讨论】:

  • 请注意,分支并不重要。重要的是提交。您可以使用分支名称访问提交,但您无需拥有分支名称即可访问提交。任何名称都可以,例如 origin/branch-A,原始哈希 ID 也可以使用(运行 git rev-parse origin/branch-A 将名称转换为哈希 ID,但请注意 git restore 已在内部为您完成此操作)。跨度>

标签: git checkout


【解决方案1】:

您可以使用结帐命令,

git checkout <remote-name>/<branch-name> -- <pathspec>

假设,在branch-A 中,您有folder-x 直接位于根目录下,而此folder-x 托管file-x.txt,然后命令仅从远程branch-Abranch-A 拉入file-x.txt会是,

首先执行一次提取,

git fetch,

然后签出文件,

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

如果要检出整个目录,

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

【讨论】:

  • 这和我第二次尝试的一样。它可以工作,但问题总是它试图获取所有文件(我的意思是重置之类的东西)而不检查来自分支 B 的文件是否已经存在或者它是否为 HEAD 版本。
  • 我不知道为什么它不适合你。它只检查我在命令中指定的文件/目录。它不应该把所有东西都拉进去。
  • 不,很抱歉造成混淆。比如说,在 Branch-B 中,有目录 X、Y、Z。我正在为 X 单独结帐。这按预期工作。但是 X 中有 N 个文件。它总是试图获取 X 下的所有文件,即使它们在 Branch-A 和 Branch-B 中是相同的。希望你。明白我的意思。
  • 简单地说,如果X目录下的文件发生变化,它应该更新。否则什么都不做
猜你喜欢
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 2018-02-20
  • 2019-03-17
相关资源
最近更新 更多