我们可以在不使用Git进行拉/签/取的情况下跟踪远程引用吗



我正在使用创建一个新的git存储库

git init

我添加了远程存储库

git remote add origin https://<URL>.git

我希望我的本地主机引用源/主机的HEAD。

我不想运行pull/fetch/checkout,因为有几个原因,包括它非常大,我只想添加文件,而不修改任何现有文件。

git remote show origin

显示获取和推送以及的远程URL

HEAD branch: master
Remote branch:
master new (next fetch will store in remotes/origin)

我试过

git branch --set-upstream-to master origin/master

但它会导致

fatal: branch 'origin/master' does not exist

那么,在不下载整个分支的情况下,我是否无法使本地主机HEAD引用远程主机HEAD?

我试着从原始文件/主文件中提取一个文件,但它出错了

git checkout origin/master -- README.md

给出错误

fatal: invalid reference: origin/master

git pull origin master -- README.md

中的结果

fatal: Couldn't find remote ref README.md
git branch -u origin/master
fatal: branch 'master' does not exist
git branch -u origin/master master
fatal: branch 'master' does not exist
git branch --set-upstream-to=origin/master
fatal: branch 'master' does not exist

有没有办法让我的本地主机引用远程主机HEAD,然后我只提取/签出/获取我需要的文件,或者只添加文件并推送它们?

要使用--set-upstream-to,远程跟踪分支必须存在。通常,创建这种远程跟踪分支的方式是获取远程或将该分支推送到该远程。使用git update-ref手动创建远程跟踪分支是可能的,但这在这里不太可能有用。Git阻止您指定不存在的ref以防止键入错误。

请注意,如果您只想向远程添加文件,并且您这样做时没有任何远程历史记录,那么您的分支将形成一个独立的根,很难合并到项目的其余部分。人们通常不会欣赏你创建这样的分支,在某些情况下他们可能会表现得很奇怪。

如果您的目标是限制必须下载的数据量,那么您最好进行浅层提取或浅层克隆,这将下载有限的历史记录,但仍会创建相关的远程跟踪分支(允许您使用git branch --set-upstream-to(,并以常规方式处理远程项目。例如,您可以使用git pull --depth=1 origin master来执行此操作。

根据bk2204在上面的评论,我发现了至少两种非常强大的技术来实现上述目标,那就是减少从远程克隆时获取的存储库的大小,因为我们可能不想处理大多数文件,其中一些文件可能非常大。

在我的具体案例中,我有一个140MB的存储库。这不是很大,但其中139MB是对现有web服务器文件(包括jar和jpgs(的一次性提交。这些都没有打算在很长一段时间内进行编辑。

我想克隆存储库来修改1个文本文件并添加一些文件。然而,在我尝试的所有情况下,我都必须下载完整的140MB。具有讽刺意味的是,在我试图避免下载140 MB的过程中,我下载了12次文件夹!

最后似乎有2个解决方案,我正在添加下面的链接

  1. Git部分克隆
  2. Git稀疏签出

稀疏校验在的Mono项目中得到了极好的解释

使用稀疏结账缩小您的单回购规模

相关内容

最新更新