|
发表于 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 的这些功能为开发者提供了非常灵活的工作方式。你可以根据你的具体需求选择适合你的方式。 |
|