1 Git 远程仓库
1.1 常用的托管服务 远程仓库
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有 GitHub、码云、GitLab 等。
| 平台 | 地址 | 特点 |
|---|---|---|
| GitHub | https://github.com/ | 面向开源及私有软件项目的托管平台,只支持Git作为唯一的版本库格式进行托管 |
| Gitee | https://gitee.com/ | 国内代码托管平台,服务器在国内,访问速度比GitHub更快 |
| GitLab | https://about.gitlab.com/ | 用于仓库管理系统的开源项目,基于Git搭建的Web服务,常用于企业、学校等内部网络搭建Git私服 |
1.2 注册码云(Gitee)
Gitee官网 注册地址:https://gitee.com/signup

1.3 创建远程仓库
根据个人所需创建远程仓库,若存在本地仓库,则不建议勾选创建按钮上方的三个复选框。

1.4 配置SSH公钥
- 生成SSH公钥
ssh-keygen -t rsa - 一路回车,使用默认值即可。

也可以选择对密钥进行详细的配置,执行后会出现提示:- 首先询问密钥保存路径,直接按回车使用默认路径(
~/.ssh/id_rsa)
Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM): 回车- 然后会提示设置密码(可选),直接按回车跳过即可(无需密码)
Enter passphrase (empty for no passphrase): 输入密码 Enter same passphrase again: 再次输入密码
生成成功后,再次执行ls -al ~/.ssh就能看到新生成的密钥文件:id_rsa(私钥,务必保密,不要分享给任何人)id_rsa.pub(公钥,需要添加到 GitHub 的文件)
- 首先询问密钥保存路径,直接按回车使用默认路径(
- 查看SSH公钥文件
id_rsa.pub的内容且进行复制:cat ~/.ssh/id_rsa.pub - 完整的复制SSH公钥后打开Gitee的SSH配置页面,将公钥复制到输入框中并保存,然后输入账户密码验证即可,如下图所示:

- 返回 Git Bash 输入下列指令测试你的电脑能否通过 SSH 协议,成功连接到 Gitee 服务器,并验证你的密钥是否正确:
ssh -T git@gitee.com
首次连接可能出现下面的提示,此时只需在结尾处输入yes,如下:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 若成功,则出现类似下列内容的语句 Hi 用户名! You've successfully authenticated, but GITEE.COM does not provide shell access.
错误提示:
执行
ssh -T git@gitee.com时出现连接认证失败,报错ssh_dispatch_run_fatal: Connection to gitee.com port 22: Broken pipe:
- 原因:本地存在多组 SSH 密钥(例如
id_ed25519用于 GitHub、id_rsa用于 Gitee),默认连接未指定 Gitee 对应私钥,导致密钥不匹配、SSH 连接断开;- 解决方法:指定正确私钥执行
ssh -T git@gitee.com -i ~/.ssh/id_rsa后,连接认证成功。
1.5 添加远程仓库
- 复制远程仓库的SSH仓库路径;

- 执行下列指令将远程仓库绑定到本地;
- 远程仓库名称:默认使用
origin,也可自定义 - 远程仓库路径:从远端服务器获取
# git remote add 远程仓库名称 远程仓库路径 git remote add origin git@gitee.com:Couioly/education-network.git - 远程仓库名称:默认使用
- 执行
git remote指令可以查看当前远程仓库列表; - 推送到远程仓库的完整版命令:
git push [-f] [--set-upstream] [远程仓库名称[本地分支名][:远端分支名]]- 若远程分支名和本地分支名相同,则可以只写本地分支名;
# git push 远程仓库名称 本地分支名称 git push origin master -f表示强制,使用于在本地仓库和远程仓库发生冲突时,进行强制覆盖;--set-upstream推送到远端的同时并且建立起和远端分支的关联关系;git push --set-upstream origin master- 若当前分支已经和远端分支关联,则可以省略分支名和远端名。
git push # 将master分支推送到已关联的远端分支 - 设置关联关系相关的指令:
git branch # 查看本地仓库分支 git branch -vv # 查看分支关联关系 git remote -vv # 查看远程仓库分支

- 若远程分支名和本地分支名相同,则可以只写本地分支名;
- 删除远程文件(本地保留)
- 删除文件
git rm --cached 文件名 - 删除文件夹(必须加 -r)
git rm --cached -r 文件夹名--cached是关键!只删远程,不删本地。删除后再次执行提交-推送即可达到删除远程文件的目的。
- 删除文件
1.6 克隆远程仓库
如果已存在一个远端仓库,我们可以直接 clone 到本地。指令如下:
# git clone <仓库路径> [本地目录(可选)]
git clone git@gitee.com:Couioly/education-network.git
1.7 远程仓库中抓取和拉取
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
- 抓取(fetch)命令形式:
git fetch [remote name] [branch name] - 说明:
- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并,需再次执行
git merge 远程仓库/远程分支名进行合并 - 如果不指定远端名称和分支名,则抓取所有分支
- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并,需再次执行
- 拉取(pull)命令形式:
git pull [remote name] [branch name] - 说明:
- 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于 fetch + merge
- 如果不指定远端名称和分支名,则抓取所有并更新当前分支
1.8 解决合并冲突
冲突产生原因:在一段时间内,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
冲突场景流程:A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库。由于B用户晚于A用户推送,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支(在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突)

远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同,在此不再赘述。
2 PyCharm 中使用 Git
2.1 在PyCharm中配置Git
安装好PyCharm后,如果Git安装在默认路径下,那么PyCharm会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的git选项:

2.2 在PyCharm中操作Git
- 创建一个远程仓库,此处以
AIHeartCrisis为例;
- 打开本地
HeartCrisisAPI项目,将本地项目初始化为Git项目,相当于执行了git init指令;
- 选择需要变更为Git项目的项目根目录文件夹;

- 点击左侧栏中的
commit按钮,勾选需要提交到仓库的文件,因为此处配置了.gitignore文件,所以可以一键勾选,该步骤类似于git add .指令;然后输入提交注释,该步骤类似于git commit -m ''指令;接下来点击commit and push首次推送远程仓库会遇到需要绑定远程仓库的情况,此处点击Define remote,在打开的窗口中配置远程仓库信息,最后点击OK和Push即可完成推送操作。
- 回到远程仓库刷新,发现成功推送!

2.3 克隆远程仓库到PyCharm
- 通过
file-Project from Version Control打开克隆窗口,将远程仓库的SSH路径复制到URL中,点击克隆Clone;
- 下图为克隆后的效果图,它将在一个新的窗口中展示;

2.4 解决冲突
- 假设此时我在原来的项目中添加了一个用于展示登录页面的接口
api/login-page;与此同时,在克隆项目中添加了一个用于展示主页页面的接口api/index-page,它们属于同一文件下同一位置,如下图所示:
- 此时我先推送原项目的修改内容至远程仓库,可见可以成功推送;

- 接下来在克隆项目中我先进行提交
commit,然后点击Git-Pull后,它将提示处理Merge异常的窗口,由于刚刚接触,我们先不在此处修改,直接关闭该窗口,接着你将看到版本控制区显示了fetch到的记录,同时导致Merge异常的文件将报错高亮显示,如下图;
- 修改合并出错的语句块,修改完成后将该文件
add到缓存区,如下图所示:
- 最后根据正常推送逻辑进行远程仓库推送即可


2.5 其他Git操作
- 添加分支操作:打开Git的Log页面,直接点击需要创建分支的位置,右键选择新建分支;

- 合并分支操作:假设现在需要将
dev分支合并至master分支,需先将当前分支切换至master,然后右击dev选择Merge 'dev' into 'master';
- 修改PyCharm的Terminal为Git-Bash

3 Git铁令
- 切换分支前先提交本地的修改
- 任何修改文件及时提交
- 遇到任何问题都不要删除文件目录