我正在尝试签出一个分支,但想排除
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 checkout BranchnameA
创建一个新的本地分支 BranchnameA
稍后您可以从中签出文件。
在第二种情况下,你没有分支
BranchnameA
,因此会出现错误。您有远程跟踪分支origin/BranchnameA
(git checkout BranchnameA
可以从中创建本地分支),因此如果您不想创建本地分支而是直接从远程签出文件:
git checkout origin/BranchnameA ':^README.md' ':^CHANGELOG.md'