Git:如何显示所有添加到遥控器上的url

cnh2zyt3  于 2023-01-28  发布在  Git
关注(0)|答案(2)|浏览(124)

上下文:我有一个origin远程与默认的url克隆后,一个仓库.由于一些Bitbucket更新,建议我们的团队将集中仓库创建另一个帐户与一个应用程序密码的所有项目的团队处理.
首先,我决定添加另一个远程使用:

git remote add norigin <new url>

但是每次推到两个遥控器会被证明是一件麻烦的事。我对一个一推命令解决方案的搜索把我带到了这里。
基本上你可以编辑/添加另一个网址到现有的远程,因此我输入:

git remote set-url --add --push origin git@bitbucket.com:username/repo2

测试了现在的git push origin <some branch>命令是否会推送到两个远程url。git log会显示noriginorigin落后一个提交,但我认为这是因为它仍然被视为另一个单独的远程,然后检查了每个单独的repo,它确实推送到两个repo,因此我删除了norigin远程。
一切正常,但当我输入git remote -v时,它只显示:

origin  git@bitbucket.com:username/repo (fetch)
origin  git@bitbucket.com:username/repo2 (push)

当预期输出应为:

origin  git@bitbucket.com:username/repo (fetch)
origin  git@bitbucket.com:username/repo (push)
origin  git@bitbucket.com:username/repo2 (push)
    • 问题:**正如标题和预期输出所示,如何显示添加到特定远程设备上的所有URL?

我尝试过的:

git remote -v show origin
git remote get-url --push origin
git remote get-url --all origin

但是它们都返回单个URL,并且该URL不是旧URL就是新URL。

t3irkdon

t3irkdon1#

这可能取决于使用的Git版本。
我刚刚用Git 2.35.1测试了你的命令,git remote -v的工作情况和预期的一样:

origin  git@bitbucket.com:username/repo1  (fetch)
origin  git@bitbucket.com:username/repo1  (push)
origin  git@bitbucket.com:username/repo2 (push)

检查.git/config文件中是否包含

[remote "origin"]
        url = git@bitbucket.com:username/repo1
        fetch = +refs/heads/*:refs/remotes/origin/*
        pushurl = git@bitbucket.com:username/repo1
        pushurl = git@bitbucket.com:username/repo2
vwhgwdsa

vwhgwdsa2#

要获得预期输出:

origin  git@bitbucket.com:username/repo  (fetch)
origin  git@bitbucket.com:username/repo  (push)
origin  git@bitbucket.com:username/repo2  (push)

我所要做的就是添加原始的repo url,就像我添加第二个一样。使用相同的命令,但是使用原始的url(不是一个真正的解决方案,因为一开始并没有真正的问题,但是如果你像我一样吹毛求疵,你只是想看到旧的/原始的遥控器的push url,那么你可以使用下面的命令来添加它):

git remote set-url --add --push origin git@bitbucket.com:username/repo

我是如何到达“变通方案"的:

重读这篇文章后,我注意到指令是在git remote add之后添加原始的repo url,你可以看到下面的指令(示例使用.org和.com url):

# Create a new remote called "all" with the URL of the primary repo.
git remote add all git@github.com:jigarius/toggl2redmine.git
# Re-register the remote as a push URL.
git remote set-url --add --push all git@github.com:jigarius/toggl2redmine.git
# Add a push URL to a remote. This means that "git push" will also push to this git URL.
git remote set-url --add --push all git@bitbucket.org:jigarius/toggl2redmine.git

我昨天做的另一个实验是删除添加到origin repo中的所有push url,结果是这个问题得到了解决。

C:~\app> git remote -v
origin  git@bitbucket.com:username/repo (fetch)
origin  git@bitbucket.com:username/repo2 (push)

C:~\app> git remote set-url --delete --push origin git@bitbucket.com:username/repo2

C:~\app> git remote -v
origin  git@bitbucket.com:username/repo (fetch)
origin  git@bitbucket.com:username/repo (push)

删除所有push url后,它会自动添加一个默认的url和fetch url一样。我不知 prop 体的行为,但我只是把它解释为git把原来的/旧的url设为默认的push url,这就是为什么它不需要显示出来的原因吗?无论如何,你可以随意添加任何一个。不管是否显示,它仍然会像预期的那样工作,只要你添加了新的回购协议(iidoEe.它将推到旧的和新的回购协议)。
PS:正如@VonC在他的回答中所说,不同的git版本之间可能会有所不同。

相关问题