最近遇到了如何在电脑上的不同位置连接不同的远程仓库的问题,很多中文的 git 教程并没有涉及到这个问题,故将查阅到的办法整理为此文。
Git初始化
1. 创建本地仓库及配置Git账号
1
2
3
|
git init #在当前位置初始化git仓库
git config user.name "A" #设置用户名为A
git config user.email "A@example.com" #设置邮箱为A@example.com
|
可以使用 git config --global
命令设置全局的账号,则除非另外声明均使用此账号。
2. 生成SSH密钥对
1
|
ssh-keygen -t rsa -C "A@example.com"
|
然后选择密钥对存储位置。
1
2
|
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yourname/.ssh/id_rsa): [Press enter]
|
设置密码(optional)。
1
2
|
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
|
与GitHub连接
这一部分并非本文的重点,请自行查阅。可参考下面的链接:
添加远程库 - 廖雪峰的官方网站
连接多个仓库
GitHub 不允许一个密钥对应用于多个仓库。所以如果我们有两个本地仓库 A 和 B 需要同步,必须生成两个密钥对,并且分别把公钥部署到 GitHub 。
1. 用名称区别不同仓库
在 ~/.ssh
目录下新建 config
文件。
1
2
3
4
5
6
7
8
9
|
host A #自定义别名,用于之后配置地址
Hostname github.com #要连接的服务器
User Lucas #用户名
IdentityFile ~/.ssh/id_rsa #密钥文件的地址,注意是私钥
host B #自定义别名,用于之后配置地址
Hostname github.com
User lucas
IdentityFile ~/.ssh/B_id_rsa
|
通过上面的设置,对不同的本地仓库我们可以使用不同的 host 的别名来指定使用哪一对密钥,类似于 CNAME 。
2. 修改本地仓库的设置
修改本地仓库 A 的 .git
目录下, config
文件的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = A@example.com
name = Lucas
[remote "origin"]
url = git@A:Yourname/example.git #使用host的别名A
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
|
3. 与远程仓库关联
1
|
git remote add origin git@server-name:path/repo-name.git
|
初始化的仓库在推送之前先拉取远程仓库的文件否则会可能会出错。
添加当前目录下的文件。
1
2
3
|
git add <filename>
git add * #使用缺省符则将当前目录下所有文件添加到git
git commit -m "first commit" #将修改在本地保存并且注释「first commit」
|
推送到远程仓库。
1
|
git push -u origin master
|
本文简单总结了 Git 的基本用法,更多的操作还需要在实践中解锁。