git 如何检查我的远程仓库中引用了哪些`origin`?

66bbxpm5  于 2023-10-14  发布在  Git
关注(0)|答案(5)|浏览(119)

只要我使用git,如果我想将本地分支重置为远程主分支,我就已经完成了

git reset --hard origin

这似乎是经验性的,但我最近了解到,这可能取决于存储库的设置,origin可能并不总是远程主分支的头。
我如何检查它指向什么?

siotufzp

siotufzp1#

每个远程都有一个 * 默认分支 *,可以使用git remote set-head进行设置。这个设置是你的克隆的本地设置,独立于远程仓库(但是你可以让Git从远程仓库赋值)。
当用于修订版本时,origin等效于origin/HEAD。因此,git reset --hard origingit reset --hard origin/HEAD相同。
要查询哪个分支当前配置为远程的默认分支,请运行git symbolic-ref refs/remotes/origin/HEAD
要查找远程存储库的已配置默认分支,请运行git remote show origin。默认的分支打印在HEAD branch: ...行中。

yrwegjxp

yrwegjxp2#

origin本身通常指的是一个特定的远程存储器-您从其中克隆存储库的远程存储器。如果你看到origin是一个较长的字符串的一部分,比如origin/mainorigin/develop,那么它表明Git应该检查它所知道的指定分支(在示例中,maindevelop)在origin远程上的信息。
在上面的例子(git reset --hard origin)中,本地分支将被重置为Git所知道的相关远程分支。这是因为本地Git已经知道当前分支应该跟踪特定的远程分支。(请注意,git reset不会启动任何类型的网络会话,因此如果您最近没有运行git fetchgit pull,则您的重置可能与遥控器上的实际内容不匹配。
您可以使用git remote -v(也将列出任何其他远程)或git remote get-url origin(仅列出origin)查看origin引用的内容。

ttp71kqs

ttp71kqs3#

您可以使用git remote -v查看存储库中引用的源代码
但是,对命令的简单修复将单独解决您的问题。只需使用git reset --hard origin/master并明确表示您希望重置为origin/master。(请注意,为了获得最高精度,您可能应该首先执行git fetch origin
在你的例子中,它之所以有效,是因为你的分支正在跟踪origin/master,所以git从origin中选择了远程跟踪分支作为隐含的refspec(完全扩展为origin/master)。如果您没有跟踪origin/master,则不会重置为origin/master,而是重置为origin/foo,例如,如果您正在跟踪远程存储库的foo分支。

wko9yo5t

wko9yo5t4#

git remote -v将显示本地存储库的所有引用的远程分支。名称是variable,你可以设置任何你想要的。
此外,您可以更改variable

git remote add origin https://some_url/some_repo

或删除它:

git remote remove origin

并使用其他名称,删除后:

git remote set-url blabla https://some_url/some_repo

最后,您可以重置:variable是原点,current branch是主节点

git fetch origin
git reset --hard origin/master
2vuwiymt

2vuwiymt5#

如果你想知道origin指的是什么,最好的方法(IMO)可能是:

git config remote.origin.url

请注意,这根本没有说明当前分支是否跟踪origin上的分支,而且git reset --hard origin可能根本不是您想要的。但我怀疑你实际上并不关心origin指向什么。如果你想将当前的分支重置为它正在跟踪的位置,你可以使用用途:

git reset --hard @{u}

这将重置当前的分支到它的远程跟踪分支,你不关心远程origin是什么。(注意,这实际上将当前分支设置为您的本地存储库认为在远程存储库上是当前的分支,因此您可能需要在此之前使用git fetch

相关问题