git fetch https:// <access-token>url-to-repo :git-branch 不起作用



我有一个带有主和branch1的git回购。在Branch1-我在两个位置克隆,我必须将其重置为一个以前的提交,然后将其强制将其推到远程并将其拿到另一个位置并重置。我必须在一些带有子过程的Python脚本中进行。因为我能够重置位置1并将强制推向远程,但是我无法将其在https url中的访问令牌中获取2。如果我可以直接给出凭据,它可以正常工作,但不能使用访问令牌URL。

尝试:git fetch https://<access-token>@repo-url :origin/branch1输出

  • 分支头 -> fetch_head

但是Origin/Branch1没有进入远程头部存在的提交,因此我无法重置该特定的提交。而:

  git fetch
  prompt - username <entered>
  prompt - password <entered>

使原点/分支1到我想要的位置,然后我可以重置。

我希望某种方法运行git fetch命令(可以包括凭据或访问权限(并在Branch1上获取远程更改,以便我可以将其重置。当我从Python子过程中跑步时,我无法为提示提供凭据。

git fetch https://<access-token>@repo-url :origin/branch1

git fetch的论点是:

  • 遥控器的名称...或者,如果您要固执,您 can 在这里使用原始URL而不是遥控器的名称,这就是您的名字完成;
  • 任意数量的 refspecs 。您使用了一个RefSpec,特别是:origin/branch1

refspecs具有src:dst的一般形式,其中 src 零件是参考的名称 - e.g。,分支或标签名称 - source reposority,infund offund source repository,和 dst 是您自己的存储库中找到的名称。(这可以由Force-Flag +进行前缀。(在这种情况下,您省略了 仅提供目的地。由于您使用的是git fetch,因此另一个git是源。因此,在这里,您尚未在源存储库中提供分支的名称git fetch不会尝试猜测。

如果您想将其branch1用作origin/branch1的来源,请提供正确的RefSpec。使用 full 参考名称也是明智的:

git fetch <url> refs/heads/branch1:refs/remotes/origin/branch1

例如。

使用远程名称而不是URL的标准获取从remote.name.fetch设置获得默认的RefSpec。对于一个名为origin的遥控器,这通常是:

+refs/heads/*:refs/remotes/origin/*

以便git fetch origin获得其分支名称的所有(refs/heads/*(,并使用这些强行更新所有相应的远程跟踪名称(refs/remotes/origin/*,带有*,自动适当地填充(。如果您提供原始URL而不是远程名称origin的原因是您需要插入访问令牌,则可以执行此提取remote.origin.fetch设置。例如:

p = subprocess.run(["git", "config", "--get-all", "remote.origin.fetch"],
    capture_output=True, text=True)
# for python 3.6 or earlier, use
#   stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True
p.check_returncode()
if p.stderr != "":
    ... do something here ...
refspecs = p.stdout.rstrip('n').split('n')

您现在可以在git fetch参数中添加refspecs(字符串列表(。


另外,如果您经常这样做,则可以添加一个具有所需访问令牌的遥控器。请注意,即使新遥控器被命名为origin以外的其他内容,您也可以将替代遥控器的提取refspec配置为覆盖refs/remotes/origin/*。例如:

git remote add tokenized-origin <url-with-token>
git config remote.tokenized-origin.fetch '+refs/heads/*:refs/remotes/origin/*'

,然后仅:

git fetch tokenized-origin

只要您想使用url with-embedded token进行此更新。

最新更新