应用场景描述:只有一台windows电脑,有多个磁盘分区。需要在这台电脑上建立两个Git仓库,能够实现这两个仓库互为对方的远程仓库,以达到两个仓库能够互相推送、拉取的功能。

  1.  添加全局的用户名和email:

    1.1  git config --global user.name "你的用户名"

    1.2  git config --global user.email "你的邮箱"

  2.  建立第一个仓库:在 D 盘新建一个目录,如:D:/git_repositoryA

  3.  在 git_repositoryA 初始化仓库:git init

  4.  修改配置 ./git/config

  1

  5.  修改配置 ./git/hooks/post-update.sample

2

  6.  建立第二个仓库:在 E 盘新建一个目录,如:E:/git_repositoryB

    (注:只要不和第一个仓库在同一路径即可)

  7.  重复 3、4、5 的步骤修改第二个仓库的配置

  8.  现在回到 git_repositoryA 仓库,添加 git_repositoryB 为 git_repositoryA 的远程仓库

    git remote add localRemoteRepoB e:/git_repositoryB

    (注:重复 8 的操作,可以配置 git_repositoryA 为 git_repositoryB 的远程仓库)

  9.  测试一下是否可以从 git_repositoryA 推送到 git_repositoryB

    9.1  在 git_repositoryA 新建文件 test.txt,并随便写几行内容

    9.2  添加 test.txt 到暂存区并提交

      git add test.txt

      git commit -m "提交的说明信息"

    9.3  推送到 git_repositoryB

      git push localRemoteRepoB master

  经过以上步骤后,问题来了。

  问题一、在执行完 9.3 步骤后,会报如下错误

 3

  这是因为 git 有安全目录的机制,即 git 认为 git_repositoryB 不是安全的,需要将 git_repositoryB 添加到配置里:

  git config --global --add safe.directory 你的远程仓库目录

  此时再执行 9.3 的命令,即可推送成功,如下图:

  4

  问题二、在解决完问题一后,转到 git_repositoryB 目录下,发现找不到推送的 test.txt 文件。

  这是因为 git_repositoryB 仓库建立时用的是 git init 命令,不是祼仓库。我们需要将 head 指针重置到正确的位置。

  解决:

  git log

  5

  git reset --hard 8e08f0c5344cb553b4065cb7fc160e69a7fa04d2

  这样就可在 git_repositoryB 看到推送的内容了。

 

posted on 2025-08-07 11:30  Recreate  阅读(10)  评论(0)    收藏  举报