4 远程操作¶
建议
git 其实很简单,多多实操就会了。建议跟着本文档实操一遍
在实操过程中,可能会遇到各种各样奇奇怪怪的网络问题,本文档提供的解决方法肯定是不全的,需要自行善用搜索解决
1 Github¶
详见 Github
2 SSH 配置¶
AI 解释
SSH(Secure Shell)是一种加密的网络协议,用于安全地访问和管理远程计算机或服务器。它通过加密通信通道,防止数据在传输过程中被窃听或篡改,是替代传统不安全的Telnet、FTP等协议的主流方案
推荐使用 SSH 与 github 远程仓库建立连接并通信
2.1 本地电脑配置¶
提示
本文档使用 Windows 系统进行演示
打开用户目录 %USERPROFILE%
(例如 C:\Users\example\
),找到名为 .ssh
的文件夹并打开(若没有自行新建文件夹即可)
在此目录下打开终端,输入命令创建 SSH 密钥
-
ssh-keygen -t rsa -b 4096
:-t
:指定密钥类型(type)rsa
:rsa 是一种加密算法,用于生成密钥-b
:指定密钥长度(bits)4096
:密钥长度为 4096 位
-
Enter file in which to save the key (C:\Users\example/.ssh/id_rsa):
:输入存储密钥的文件名称,若不输入,默认名称为 id_rsa(如果需要多个 SSH 密钥的话,必须自定义名称,不然新的会覆盖掉旧的) Enter passphrase (empty for no passphrase):
:设置密码,可不设置。即使不设置密码,rsa 算法每次生成的密钥内容也不相同
之后,生成一个公钥文件 id_test.pub
和私钥文件 id_test
,其中公钥文件可以公开,而 私钥文件万万不可公开
新建一个名为 config
的文件,打开编辑
# github
:注释行Host github.com
:定义主机的别名HostName github.com
:指定实际连接的主机名(这里是 GitHub 的真实域名)PreferredAuthentications publickey
:优先使用 publickey 方式认证(即 SSH 密钥登录)IdentityFile ~/.ssh/id_test
:指定用于认证的私钥文件路径,id_test
根据实际私钥文件的名称进行修改
这个文件的作用简单来说就是,当我们访问 github 时,会使用 id_test
这个私钥文件进行验证
2.2 Github 配置¶
打开 github 设置 SSH and GPG keys,新建一个 SSH key

复制公钥文件 id_test.pub
中的所有内容到 Key 栏中,Title 栏相当于起个名字

之后点击 Add SSH key 按钮即可
2.3 验证连接¶
设置完成后,打开终端,输入命令验证连接
ssh -T git@github.com
:此命令中的github.com
字段实际上就是我们在config
文件中配置的主机别名Are you sure you want to continue connecting (yes/no/[fingerprint])?
:输入yes
确认Hi WintermelonC! You've successfully authenticated, but GitHub does not provide shell access.
:出现此行,说明 SSH 连接成功
之后 .ssh
文件夹中会多出 known_hosts
和 known_hosts.old
两个文件,不用去管
多账户配置
如果想在同一台电脑上使用两个 github 账号,但这两个账号使用不同的 SSH 密钥,该如何配置呢。这就需要修改 config
文件当中的主机别名了,以及需要修改 git 本地仓库的本地配置等等。具体方法本文档不涉及,感兴趣或有需要请自行搜索
网络问题
关于 SSH 的各种奇奇怪怪的网络问题,分享一个我的经验
我平常用 github 的时候,会开启加速器,如果需要使用 SSH 连接的话(如使用 git 的远程操作命令),我会关闭加速器。我这样用起来没有什么问题
但有时候使用 git 的远程操作命令时,会报错(具体报错信息忘了,后面遇到再补充)。这时候换一个 WIFI 就好了
之前我遇到其他报错信息时,我尝试过上网搜索,但是网上的方法我都试过,在我这里都不适用,很奇怪
3 Git 远程操作¶
3.1 Github 仓库¶
我们首先创建一个 github 仓库(repository),点击左侧的 New 按钮

编辑仓库的信息

关于
README
文件是什么,详见下文
之后会出现该页面,可以看到 github 已经给出了不同情况的具体做法

我们在第 3 章已经有了一个本地仓库,所以选择下面这种方法即可
3.2 关联仓库¶
打开我们的本地仓库,目前 git 长这样

在终端中输入
git remote add {origin_repository_name} {SSH link}
:添加远程仓库,远程仓库的名称(远程别名)自定,但一般都用origin
,后面的 SSH 填 github 仓库对应的
git remote -v
:查看远程仓库信息
之后 github 提示输入 git branch -M main
,意思是将该仓库的主分支名称修改为 main
,但由于我们之前已经全局修改过了,所以这里可以不输入
3.3 Git 推送分支¶
接下来按照提示,输入
git push
:将本地仓库的提交上传到远程仓库
git push {远程别名} {local_branch}
:将本地的 local_branch 分支推送到远程别名所指向的仓库的 local_branch 分支git push {远程别名} {local_branch}:{remote_branch}
:如果希望远程分支的名字和本地不一样,可以使用这个格式。将本地的 local_branch 分支推送到远程,并命名为 remote_branchgit push -u {远程别名} {local_branch}
:-u
表示在推送的同时,建立本地分支与远程分支的跟踪关系(tracking)。设置之后,下次在这个分支上直接使用git push
或git pull
即可,无需再指定远程和分支名
现在,我们刷新一下 github 页面,可以看到本地仓库的内容同步到了 github 远程仓库上了

思考
为什么本地仓库的 .gitignore
a.exe
hello.c
没有出现在 github 上呢
接下来我们修改一下本地仓库,然后推送新的提交到远程仓库
新建一个文件
success.txt | |
---|---|
然后提交修改

之后终端输入 git push
刷新一下 github 页面,可以看到新的文件也同步过来了

VS Code
3.4 Git 拉取分支¶
推送是指将本地仓库的(新)提交同步到远程仓库,拉取则是指将远程仓库的(新)提交同步到本地仓库
这里远程仓库的(新)提交来源,一般都是其他协作者的(比如其他协作者做了一个新功能,将新代码同步到了远程仓库上,之后我们进行工作的时候,就需要先把这些新代码从远程仓库同步到我们的本地仓库中)
这里我们演示一下直接在 github 上改文件,然后如何同步到我们的本地仓库中
点击页面下方的 Add a README 按钮,新建一个 README 文件
AI 解释
简单来说,README 是一个项目的“门户”和“说明书”
1.项目介绍 (Introduction)
它是什么?用一两句话清晰明了地告诉访客这个项目是做什么的。这是最重要的部分,需要在开头就抓住读者的注意力
项目目标/愿景:这个项目旨在解决什么问题?它的最终目标是什么?
2.快速开始 (Getting Started)
这是技术项目 README 的灵魂。它需要让一个新用户能够以最少的步骤在本地安装、配置和运行你的项目
3.使用说明 (Usage)
项目运行起来后,如何使用它?
4.参与贡献 (Contributing)
对于开源项目,这部分至关重要。它告诉其他开发者如何为你的项目做贡献
5.许可证 (License)
明确项目的法律授权方式。告诉别人他们可以使用、修改和分发你的代码的规则。一个简单的 This project is licensed under the MIT License.
和指向 LICENSE
文件的链接就足够了
6.常见问题 (FAQ)
将开发和使用过程中可能遇到的常见问题及其解决方案列出来,可以为他人节省大量工期
编辑一下内容,为 markdown 格式
README.md | |
---|---|
提交修改

编辑提交信息,我们这里可以直接提交到 main 分支上

pull request 等操作,5 多人协作 会涉及
添加了 README
文件后,可以看到其内容就可以直接显示到仓库页面了

现在打开本地仓库,在终端中输入 git pull
即可拉取远程仓库的内容

3.5 合并冲突¶
同样的,推送和拉取操作可能会遇到合并冲突的问题(常见于多人协作),处理方法和 3 分支操作 大差不差,本文档就不详细说明了