boluobenbo 发表于 2023-5-29 16:28:17

isdkz 发表于 2023-5-29 17:15:11

理解你的疑问,下面我来分别回答:

1. 多个远程仓库可以用于多种场景。例如,你可能正在协作开发一个项目,这个项目的主要仓库(origin)可能在 GitHub,但你可能还想要在其他地方备份你的代码,比如 Bitbucket,那么你可以将 Bitbucket 的仓库设置为另一个远程仓库。另一个常见的场景是,当你想要对别人的项目进行贡献时,你可能需要先 Fork 这个项目到你自己的 GitHub 账户下,然后将这个 Fork 的项目 clone 到本地,这时你的本地仓库就有两个远程仓库:一个是原始项目的仓库,一个是你 Fork 后的仓库。

2. 是的,你的理解是正确的。在你描述的情况下,A 和 B 文件夹确实就是两个独立的本地仓库,它们分别有自己的.git文件夹,存储着各自的版本历史。

3. 你的理解部分正确。不过,关于多个远程仓库,我们需要进一步理解:
    a. 一个本地仓库可以有多个远程仓库。在git remote -v中, -v (verbose)的意思是显示详细信息,用于列出所有的远程仓库。当你在 A 文件夹中输入git remote -v ,它会列出与当前本地仓库相关的所有远程仓库。这并不代表 A 文件夹的 git 能管理所有的项目,而只是当前这个本地仓库可以与多个远程仓库同步。
    b. "fetch" 和 "push" 描述的是你从这个远程仓库拉取和推送代码的默认行为。在你的例子中,可能是这个项目有两个远程仓库,一个是原始的仓库,你只能从这个仓库拉取代码(fetch);另一个是你 Fork 的仓库,你可以在这个仓库中进行推送(push)。这样,你可以在你的 Fork 仓库中进行修改和开发,然后定期从原始仓库拉取更新。

关于你的最后一个问题,“viztracer”这一个项目为什么需要两个远程仓库?这是因为在开源社区,开发者通常会 Fork 一个项目进行开发,然后向原始项目提交 Pull Request。在这种情况下,开发者的本地仓库就会有两个远程仓库:一个是原始项目的仓库(用于拉取最新的代码),一个是 Fork 的仓库(用于推送自己的改动)。至于本地为什么需要多个仓库,这通常是因为开发者同时在处理多个项目或者需要管理不同的开发环境。每个仓库可以独立地追踪历史,分支等,所以它们是独立的。

在同一个项目下使用两个本地仓库的情况相对较少,因为 Git 的分支系统可以很好地处理单个项目中的多个开发线。但是,有些情况下,你可能想要完全独立的工作副本,比如当你需要维护项目的多个版本时(比如版本 1.x 和版本 2.x)。这时,你可能会选择创建两个本地仓库,每个仓库对应一个版本。

总的来说,Git 的这些功能为开发者提供了非常灵活的工作方式。你可以根据你的具体需求选择适合你的方式。

boluobenbo 发表于 2023-5-29 17:28:59

isdkz 发表于 2023-5-29 17:32:09

boluobenbo 发表于 2023-5-29 17:28
谢谢你的详细回复。非常有帮助。但是我也产生了一个新问题。如何灵活的让一个本地仓与多个远程仓“关联” ...

要添加一个新的远程仓库,你可以使用git remote add命令。这个命令后面通常跟两个参数:一个是远程仓库的别名(例如 origin),一个是远程仓库的 URL。

假设你有一个现有的本地仓库,并且你想要添加一个新的远程仓库,步骤如下:

1. 在命令行中,切换到你的本地仓库的目录。
2. 输入以下命令,将新的远程仓库添加到你的本地仓库:

git remote add <别名> <远程仓库的 URL>


请将<别名>和<远程仓库的 URL>替换为你实际的内容。例如,如果你想要添加一个名为 backup 的远程仓库,其 URL 为https://github.com/user/backup.git ,你可以输入:

git remote add backup https://github.com/user/backup.git


这个命令会添加一个新的远程仓库,别名为 backup,URL 为https://github.com/user/backup.git 。

要将本地的代码推送到新的远程仓库,你可以使用git push命令:

git push -u backup master


这个命令将你本地的 master 分支推送到名为 backup 的远程仓库。

注意,你需要确保新的远程仓库是空的,否则git push可能会失败,因为 Git 不允许你推送代码到一个包含不同历史的仓库。

一旦你添加了新的远程仓库,你就可以使用git push 、 git fetch 、 git pull等命令来推送和拉取代码。你只需要在命令后面指定远程仓库的别名即可。例如,要从 backup 仓库拉取代码,你可以输入git pull backup 。

如果你想查看所有的远程仓库,你可以输入git remote -v命令。这个命令会列出所有的远程仓库及其 URL。

boluobenbo 发表于 2023-5-29 17:46:00

页: [1]
查看完整版本: 多个远程仓之间是什么关系?