【问题标题】:Multiple remotes for the same GitHub account同一个 GitHub 帐户的多个遥控器
【发布时间】:2021-12-20 20:57:29
【问题描述】:

我希望在我的 GitHub 帐户中拥有多个与我现在正在工作的各种 Android Studio 项目相关联的存储库。我已经完成了我的第一个,并将其推送到我的 GitHub 帐户中的存储库。但是当我尝试将另一个 Android Studio 项目推送到不同的存储库(在同一个 GitHub 帐户中)时,出现以下消息:couldn't add remote: remote origin already exists.。

在网上查找了更多信息后,我设法了解了遥控器的基本工作原理以及解决问题的方法。但是我不能完全理解的是,如果每次我在处理一个新项目并且我想将更改推送到我的 GitHub 存储库时,我是否必须更改这个默认远程(以源为例)。根据一些解决方案,您可以使用 `git remote add name URL 命令将此(一个?)远程更改为不同的 URL。

我是否遗漏了某些东西,或者每次有人想要在不同的项目中推送一些更改(转到同一 GitHub 帐户上的不同存储库)时,应该首先执行此 git remote add <name> url 过程?即使您必须在同一天将多个更改推送到不同的项目?为什么我不能使用多个名称不同的遥控器,这些遥控器只能设置一次并链接到同一个 GitHub 帐户的特定项目/存储库?

【问题讨论】:

  • 当您 git clone 将 repo 存储到本地计算机时,默认情况下会设置 origin 远程。目前尚不清楚您究竟做了什么才能达到当前状态。
  • 我怀疑你已经为你的整个 github 帐户而不是每个单独的项目初始化了一个本地 git 存储库。您将需要删除该存储库并为每个项目创建一个
  • 感谢两位的回答。虽然我没有为我的整个 github 帐户初始化本地 git repo,但我认为当我试图解决 Gradle 过去遇到的问题时,我很困惑,很可能我使用了一些我从另一个项目中丢失的文件。粘贴它们。所以我想我复制了 .git/refs/remotes/origin 主文件。

标签: git github git-remote


【解决方案1】:

每个项目的远程源地址是特定的,每个项目只需要设置一次。因此,在您的开发机器上,您有许多项目,在每个单独项目的根文件夹中,您使用git init 初始化一个 git 存储库。这会为您的特定项目(而不是整台机器)初始化该根文件夹内的本地 git 存储库。

当您为该特定项目设置 bitbucket 或 github 或任何存储库时,您需要告诉本地项目该特定项目的 url 是什么。 通过添加远程源来确保您位于特定项目的根目录中并使用git remote add origin someurl 来执行此操作,其中 someurl 是远程存储库的 url。 一旦为每个单独的项目设置了这些,您就不必更改它们。因为它们是针对本地项目根目录中的本地存储库设置的,所以当您第一次运行 git push 或第一次运行 git push origin main 或 master 或任何您的主根 git 分支的名称时,第一次,然后 git 会自动知道每次推送到哪里,因为您在项目根文件夹中运行这些命令,git 会在您的项目特定存储库中获取该远程 url。

所以为了澄清,git 命令是特定于存储库的。只要您在每个项目的根目录中都有一个已初始化的本地 git 存储库,并且命令仅在该项目特定的根文件夹内运行,那么您每次推送时都不需要更改任何内容

【讨论】:

    【解决方案2】:

    我不完全确定发生了什么让你回到现在的状态,但我认为有些地方出了问题。我将提供一个解释,希望能有所启发,但如果不是,请为您的项目发布.git/config 文件的副本并更新您的问题。

    远程是 git 可以在哪里找到存储库以同步更改的规范。它通常是一个 URL,但它甚至可以是当前计算机上的一个文件路径,您在其中有另一个 repo 副本。

    这意味着每个项目都有自己的遥控器。

    如果我在https://github.com/codeinred/tuplet.git 克隆一个名为 tuplet 的项目,那就是该项目的远程。如果我创建一个不同的项目,它会得到一个不同的遥控器。

    如果你在本地机器上创建了一个项目,并且你想稍后添加一个远程,首先你需要确保远程存储库存在(去 github 并创建一个新项目),然后你需要复制那个特定项目的 git url。这是您使用git remote add 的时候。如果您将遥控器重新用于现有项目,它可能会拒绝推送,因为该遥控器已经存在。

    旁注:拥有多个遥控器。

    有时本地存储库有多个远程。这是您有意设置的,因为您想跟踪项目的不同版本。

    例如,当我 fork 一个项目时,我将为原始存储库添加一个远程,以便我可以下载他们所做的任何更改。通常,此遥控器将命名为 upstream。

    git remote add upstream
    # Download upstream changes
    git fetch upstream
    
    # Compare your changes to theirs
    # Use the name of whatever branch you want to compare
    git diff main upstream/main
    
    # Merge changes into your current branch
    git merge upstream/main
    

    【讨论】:

    • 据我所知,我不相信有任何东西被克隆,这些是本地生成的新项目,使用本地初始化的 git 存储库
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 2018-03-22
    • 2011-04-21
    • 2018-05-06
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多