Git入门笔记(2):远程仓库
Git入门笔记(二)
远程仓库
克隆项目到本地
很简单,git clone <url>
在url填入远程仓库的地址就可以clone到本地了,url处有两种地址,一种是通过SSH进行克隆,另外一种是通过HTTPS的方式进行克隆。
上面为SSH的方式,下面为HTTPS的方式。
初始化远程仓库
HTTPS
以GitHub为例子,具体账号与仓库创建不再赘述。
仓库创建好了之后,我们看到我们的仓库是没有初始化的,GitHub页面上会出现一个初始化的教程。
我们照着教程上初始化即可,简单来说,它的初始化过程就是,先生成一个README.md
,接着创建一个本地仓库,提交README.md
到本地仓库,然后将本地仓库推送到远程仓库,即可完成初始化。
配置SSH
Git支持多种协议,其中包括SSH,SSH速度相当不错,比HTTPS效果更佳。我们来配置一下SSH。
第一步,我们检查一下电脑上是否已经存在SSH Key
。
1 | cd ~/.ssh |
如果显示出存在id_rsa.pub
或 id_dsa.pub
文件时,则证明已经存在SSH Key
,可以跳过第二步。
第二步,创建SSH Key
。
1 | ssh-keygen -t ed25519 -C "[email protected]" |
如果你的电脑不支持ed25519
的加密格式,我们也可以使用传统的rsa
加密:
1 | ssh-keygen -t rsa -b 4096 -C "[email protected]" |
我们可以来看看参数的含义:
参数 | 含义 |
---|---|
-b | 指定密钥长度 |
-e | 读取openssh的私钥或者公钥文件 |
-f | 指定用于保存密钥的文件名 |
-t | 指定密钥类型 |
-C | 添加注释,往往以邮箱作为注释 |
通常的,我们可以省略-b
参数。-f
参数会在后面提示中让你填写:
1 | Enter file in which to save the key (/c/Users/yourusersname/.ssh/id_rsa): [Press enter] |
这里推荐使用默认即可,接着会提醒是输入两次密码,此密码为push时使用的密码,不是GitHub的密码,我们可以不输入,这样在push时就不需要密码了:
1 | Enter passphrase (empty for no passphrase): |
接下来,就会出现代码提示
1 | Your identification has been saved in /c/Users/yourusersname/.ssh/id_rsa. |
意味着你的SSH Key
就创建好了,公钥就是/c/Users/yourusersname/.ssh/id_rsa.pub
、私钥是/c/Users/yourusersname/.ssh/id_rsa
。
第三步,添加SSH Key
至Github。
用任何文本编辑器打开你的公钥id_rsa.pub
,复制文件内所有信息。
打开你的Github,点击你的头像,选择settings
,然后再Access
中找到SSH and GPG keys
选项,选择New SSH key
。
在title
填入你想给这个SSH Key
的备注,在Key
中粘贴进刚刚复制的信息,点击Add SSH key
即可。
这样就添加成功SSH Key
了。
第四步,测试SSH Key。
打开Git Bash,输入:
1 | ssh -T [email protected] |
出现提示:
1 | The authenticity of host 'github.com (207.97.227.239)' can't be established. |
输入yes
即可,若创建时使用了密码,这时就需要输入你的密码。
完成后就会出现:
1 | Hi username! You've successfully authenticated, but GitHub does not |
这样,你的Github的SSH设置就算完成了。
接下来初始化的步骤,与HTTPS几乎没有什么区别,按照Github上提示完成即可。
[^参考资料2]: 使用 SSH 连接到 GitHub - GitHub Docs
从远程仓库更新
有两种方法,第一种比较安全,第二种比较方便。
git fetch
我们需要两个步骤:
- 从远程仓库中抓取与拉取
1 | git fetch <remote> |
这个命令可以从远程仓库中下载数据到本地仓库,但没有进行合并。
我们clone了一个远程仓库,命令会自动将远程仓库命名为origin
,一般来说,我们在本地仓库的文件夹内,使用origin
作为<remote>
即可,即
1 | git fetch origin |
- 合并到本地仓库分支
1 | git merge <remote>/<branch> |
这个命令的意思是,将<remote>/<branch>
分支与主合并。
<remote>/<branch>
是我们从远程仓库下载下来的分支,在Github中,主分支被命名为main
,因此,我们从Github远程仓库下载下来的主分支名字一般都为main
,所以我们要将远程下载下来的主分支与本地仓库当前分支合并,运行
1 | git merge origin/main |
git pull
这个命令相当于是将上面两个命令合二为一,即抓取数据并自动尝试合并到当前所在的分支。使用很简单:
1 | git pull <remote> <remote branch>:<local branch> |
意思是从remote
远程仓库中拉取remote branch
分支,并与本地的local branch
分支合并:
1 | git pull origin main:main |
如果远程分支是与当前分支合并,则冒号后面可以省略:
1 | git pull origin main |
推送到远程仓库
推送到远程仓库的命令,与上面git pull
的命令格式非常相似:
1 | git pull <remote> <local branch>:<remote branch> |
意思是将本地仓库local branch
分支与remote
远程仓库中的remote branch
分支合并。
如果远程分支名与本地分支名相同,则可以省略冒号后面的内容:
1 | git pull <remote> <local branch> |
实例:
1 | git push origin main |
意思为将本地的mian
分支推送到远程仓库,并于其中的main
分支合并。
使用这个命令,我们还可以删除远程仓库中的分支:
1 | git push origin --delete testbranch |
意思是删除远程仓库中testbranch
分支。