應用場景描述:只有一臺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

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

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 步驟后,會報如下錯誤

這是因為 git 有安全目錄的機制,即 git 認為 git_repositoryB 不是安全的,需要將 git_repositoryB 添加到配置里:
git config --global --add safe.directory 你的遠程倉庫目錄
此時再執行 9.3 的命令,即可推送成功,如下圖:

問題二、在解決完問題一后,轉到 git_repositoryB 目錄下,發現找不到推送的 test.txt 文件。
這是因為 git_repositoryB 倉庫建立時用的是 git init 命令,不是祼倉庫。我們需要將 head 指針重置到正確的位置。
解決:
git log

git reset --hard 8e08f0c5344cb553b4065cb7fc160e69a7fa04d2
這樣就可在 git_repositoryB 看到推送的內容了。
浙公網安備 33010602011771號