WSL2+Gitee代码管理实战指南
Git + Gitee + WSL2 代码管理
基础环境配置(Ubuntu/Debian 发行版选择)
根据自己的需求,选择自己熟悉的且稳定的发行版即可
我这里选用Ubuntu18.04LTS
WSL2 中 Git 的安装与初始化设置
先查看WSL2中是否有git(我这里是Ubuntu18.04,比较老,是配合jetson nano 使用的)
输出如下格式就是有
没有的话就直接apt安装即可
然后设置GIT使用的邮箱和用户名
全局配置(SSH 公钥生成)
公钥生成
在本地生成公钥并上传到Gitee中,首先检查是否有SSH公钥,若有则复制使用,没有则创建新密钥。我这里就没有密钥,需要创建新公钥,后面会有三次提示,1-公钥文件保存路径(直接回车为默认路径,推荐)2- 密码短语,需要更高安全性可填,否则留空即可 3- 确认密码短语
ssh-keygen -t rsa -b 4096 -C "@qq.com"
-t rsa 指定要创建的密钥的类型 -b 4096 指定密钥的位数 -c "@qq.com" 添加一个注释,通常用于标识该密钥的用途或所有者
然后在 ~/.ssh/ 路径下找到公钥文件id_rsa:私钥,必须严格保密,绝不能泄露或上传到任何服务器。id_rsa.pub:公钥,可以安全地公开,需要将它添加到 Gitee 账户的 SSH 公钥列表中。
公钥配置
使用ssh -T [email protected]测试链接,出现如下提示则代表成功
Gitee 账号与仓库准备
Gitee 账号注册与 SSH 公钥配置
创建新仓库或导入现有项目
创建新仓库
名字和路径按自己的习惯来
这里仅供我做测试用,设为私有
仓库地址
创建成功后,你会看到仓库主页,复制 HTTPS 或 SSH 地址(推荐使用 SSH,配置后无需每次输入密码)。地址类似:HTTPS:https://gitee.com/你的用户名/my-project.gitSSH:[email protected]:你的用户名/my-project.git
我使用SSH
Git 基础操作与 WSL2 集成
本地仓库初始化与远程关联git init与git remote add的使用
我的本地项目此时并未初始化
添加远程仓库地址,此处使用我们创建仓库完成后的那个SSH地址
推送到Gitee并建立关联
那么此时就可以在我们的Gitee仓库中看到我们推送的项目
常用 Git 命令实践
日常管理项目
查看状态
可以查看当前暂存区中等待提交的文件列表添加修改
此时代码没有上传到仓库,只是将需要增添或修改后的文件添加进暂存区
命令执行后变化如下提交修改
此时将代码提交到本地仓库,并写清提交说明
此时查看提交记录
此时HEAD 指向新的提交本地仓库退回旧版本
若在推送到远程之前发现错误,想要退回到旧版本
需要查看提交记录,找到你想回退的那个版本的提交哈希值
需要用到 git reset
区别在于
mixed将暂存区切换到指定版本,工作区内容不变,所作修改不会丢失
soft仅移动HEAD工作区和暂存区不变
hard则是工作区和暂存区都改变,所作修改会丢失
若是选择hard,那么则丢失了新创建的test_001.py文件推送到远程
我们在此前已经进行关联,此处直接推送远程仓库修改错误
则用到git revert,本质是创建新的提交,而不影响之前的提交
在共享分支上永远不要修改已推送的历史,应当使用git revert 等安全方式撤销改动
若确实需要修改,则需通知协作者统一处理且做好备份
拉取远程更新
首先需要知道远程仓库的提交历史
若我想回到ef79b8ea版本
可基于该版本创建新的分支
也可将特定提交拉取到本地,与本地分支合并查看提交历史分支管理(branch、checkout、merge)
查看分支
创建并切换分支
推送新分支到远程
合并分支(在目标分支下进行)
多人协作
这里我使用我另一台设备(Ubuntu20.04)来尝试进行多人的协作。
基础配置
首先查看是否有git,没有则安装,上文有安装教程
接下来查看当前git用户信息
若是需要修改,则用以下命令。
我这里选择使用ssh方案,需要添加公钥,生成和添加的过程都和上文相同。
最后测试链接
拉取远程仓库
这一步正式开始协作
首先获取仓库地址并拉取,我这里仍然选择SSH
执行如下命令即可将远程仓库克隆到本地并自动建立关联
至此,咱们就拥有了该仓库的所有历史开始协作
从这里开始是至关重要的,此时可能会出现各种各样的问题。
由于我有些时间没有修改这个仓库的内容了,这里我直接拿这一台设备直接修改。首先查看当前的文件状态,这里我仅修改了一个文件。
由于是我本人操作,这里先直接推送到master,以便观察效果。
然后我们登入另一个协作者,拉取最新代码,我这里已经拉取过,所以是Already up to date.之后就各自开发并且及时推送和拉取。
但多人同时开发多个功能,还需要能够正常使用当前稳定的代码,那么则需要使用功能分支,开发在其他分支,验证后才合并到主分支,保证主分支随时可用。至于功能分支,待我再研究下分支管理后再详细介绍。