当分支不是本地时,包含排除的 Git 签出失败

问题描述 投票:0回答:1

我正在尝试签出一个分支,但想排除

REAMDE.md
CHANGELOG.md
文件。


工作:

git clone [url] --no-checkout .
git checkout BranchnameA
git checkout BranchnameB # (any other branch)
git checkout BranchnameA ':^README.md' ':^CHANGELOG.md'

上述内容保留了

README.md
中的
CHANGELOG.md
BranchnameB
文件,并且不会用
README.md
中的
CHANGELOG.md
BranchnameA
文件覆盖它们。


不工作:

git clone [url] --no-checkout .
git checkout BranchnameA ':^README.md' ':^CHANGELOG.md'

错误信息:

error: pathspec 'BranchnameA' did not match any file(s) known to git
error: pathspec ':^README.md' did not match any file(s) known to git
error: pathspec ':^CHANGELOG.md' did not match any file(s) known to git

我能看到工作版本和不工作版本之间的唯一区别是工作版本有本地

BranchnameA
,而不工作版本则没有。

那么为什么我需要本地版本来检查排除模式?
另外,有办法解决这个问题吗?我已经尝试过

sparse-checkout
,但这并不能真正实现我的目标。

git git-checkout git-sparse-checkout
1个回答
0
投票

在第一种情况下

git checkout BranchnameA
创建一个新的本地分支
BranchnameA
稍后您可以从中签出文件。

在第二种情况下,你没有分支

BranchnameA
,因此会出现错误。您有远程跟踪分支
origin/BranchnameA
git checkout BranchnameA
可以从中创建本地分支),因此如果您不想创建本地分支而是直接从远程签出文件:

git checkout origin/BranchnameA ':^README.md' ':^CHANGELOG.md'
© www.soinside.com 2019 - 2024. All rights reserved.