文章目录
0 前言
项目需要,安排在GitHub仓库更新代码分支
在Windows环境下,通过git软件进行实现
1 安装git
首先安装git,后续操作若无特殊说明,命令均在git base中执行
官网因为众所周知的原因,下载不方便,因此选择了清华软件源进行下载
https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/Git%20for%20Windows%202.37.1/
安装后,右键桌面出现如下则说明安装成功,win11的话需要点击更多按钮才可出现如下菜单
打开git bash即可
主界面,然后配置本地账户,输入
git config --global user.name "自定义本地用户名"
git config --global user.email "你的邮箱地址"
注:一般用这个设置本地的用户信息,以方便查看提交的用户信息
config 有三个作用域参数 :
local:只对本仓库有效
global:只对登陆用户的所有仓库有效
system: 对系统的所有用户有效
2 生成ssh公钥和私钥
首先查看电脑之前是否生成过密钥,避免后续命名出现记忆错误
最稳妥的就是提前删除电脑中存在的id_rsa、id_rsa.pub文件,这是之前ssh生成密钥的默认名称
可以按如下命令来生成 ssh key:
ssh-keygen -t rsa "邮箱名称 XXX@XX.com"
注意:生成的文件名跟密码可以不填,直接按3次回车.填了以后使用git都要输入密码
按照提示完成三次回车,即可生成 ssh key.通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的ssh key
cat ~/.ssh/id_rsa.pub
注:~/ 指的是用户名下面的文件夹,即 C:/用户/用户名/
输出:
这个就是ssh key的内容(可以理解公钥)
复制生成后的 ssh key,通过点击个人头下的设置>找到安全设置>SSH公钥 ,添加生成的ssh key 添加到仓库中。
在Title处给该公钥取个名称,在Key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。
3 配置config文件
如果在~/.ssh/下没有config文件,需要先创建config文件 :touch config
然后填入以下内容
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
执行
ssh-add
若出现
Could not open a connection to your authentication agent
执行如下命令
ssh-agent bash
然后再执行
ssh-add ~/.ssh/id_rsa
4 测试git@github
git@github
执行命令
ssh -T git@github
若出现如下错误
执行
ssh -T -p 22 git@github.com
其中-p 22表示将服务器端口改为22。
出现
Hi Sheng-ZM! You’ve successfully authenticated, but GitHub does not provide shell access.
git clone
直接执行
git clone
因为没有指定克隆的目录,所以会提示错误,不过能打印出来信息证明clone功能正常
5 生成token(可选)
现在github出于安全的考虑,将在2021年8月停止使用账号和密码的方式访问github仓库,改为token认证的方式。
登录github,生成token令牌进行认证。
输入登录密码
填写描述、过期时间、选择权限范围
复制令牌并保存起来(只会出现一次,之后将不会再次出现)
6 Pull Request
6.0 介绍
PR 的全称是Pull Request,经常用 Github 的同学对这个肯定很熟悉了。Github 聚集了4000万开发者,过亿的开源项目,如果想给别人的开源仓库贡献代码,通常是先 fork 别人的项目,然后本地修改完成提交到自己的个人 fork 仓库,最后提交 PR 等待别人合入你的代码。
Github 的工作流:
fork 工作流
我们重点看一下第6步,小明写完代码了想合入到原作者的仓库,新建了一个“pull request”,拉请求?这明明是推啊,小明将自己的修改推到原作者的仓,感觉叫“push request”比较合适吧。
既然 Github 坚持叫“pull request”,我们试着理解一下它的思路,小明写完代码了心里肯定是在想:原作者大神,我改了点东西,你快把我的修改拉回去吧。站在原作者的角度思考,叫pull request好像也说得过去,每天有大量的人从我这里 fork 代码走,我只会拉取我感兴趣的代码回来。
6.1 fork
fork小红在GitHub上的Repository到小明的GitHub
点击右上角的fork按钮就可以把代码全部复制到自己的Repository
6.2 clone本地
打开刚才fork的Repository,复制该Repository的SSH使用命令
git clone git@github.com:Sheng-ZM/tms-go-apihub
默认地址是 ~ ,即下载文件夹到了C:/用户/用户名/
6.3 add
6.3.1 查看当前链接情况
命令查看一下小明的本地Repository与哪些远程仓库建立了链接
git remote -v
发现:只与小明在GitHub的Repository建立了链接,很显然没有与小红在GitHub上的Repository建立链接,如下图:
6.3.2 建立新的链接
使用命令
git remote add upstream https://github.com/jasony62/tms-go-apihub/
再次查看
6.4 Commit
6.4.1 新建工作分支
使用命令:
git checkout -b shengzm-branch
新建并切换到新建的分支 shengzm-branch;
使用命令:
git branch
查看当前所在分支。
6.4.2 修改
比如在我们的当前目录tms-go-apihub新建文件夹和文件
test_shengzm/hello.go
6.4.3 add添加
需要通过add命令添加新建的文件
git add test_shengzm/
直接添加文件夹会提示风险,可能会发生替换和覆盖
也可以具体到具体的文件
git add test_shengzm/hello.go
6.4.4 commit
git commit -m "第一次测试上传"
6.5 git push
git push 命令用于从将本地的分支版本上传到远程并合并。
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
使用 git add PRTest
,git commit
,git push
等系列命令提交到小明的GitHub上的Repository(一定注意,是小明的)
以下命令将本地的 shengzm-branch 分支推送到 **origin 主机的 main分支(**若无会新建此分支)。
$ git push origin shengzm-branch
相等于:
$ git push origin shengzm-branch:shengzm-branch
这里我们都用默认的就好,具体命令为:
git push -u origin shengzm-branch:main
将本地shengzm-branch分支代码更新到origin远程主机的main分支上
push完成后,可以登陆网页查看上传情况,如图所示
6.6 PR(Pull Request)
6.6.1 Comparing changes
a.到小明的GitHub的Repository上点击Pull Requests,再点击New pull requests按钮;
如下图:
b.进入Comparing changes界面。
6.6.2 Create pull request
a.点击Create pull request按钮;
b.填写相关信息,在点击Create pull request按钮即可。
6.7 Merge
这是老板的任务了。
6.8 远端更新同步
6.8.1 同步远程main分支到本地shengzm-branch分支
git pull https://github.com/jasony62/tms-go-apihub.git main:shengzm-branch
6.8.2 更新自己分支的代码 from upstream
git fetch upstream
git merge upstream/main
6.8.3 push
同步最新代码后,又是一次再次更改和提交的循环流程
7 VSCode开启git可视化新篇章
作为一名有节操的程序员,当然不满足全部的命令操作,缺少了科技的味道
既然我们有VSCode 这种神级工具,既然也要用得上
当然下面的操作都是在第6章节操作进行过定义后才可能会有的选项和操作
7.1 准备工作
首先我们打开VSCode,点击左侧的分享按钮,这就是我们的git
然后打开源代码管理存储库
7.2 选择需要拉取或推送的存储库
准备我们要拉取pull和推送push的远程分支
我们先来查看一下已经保存了的分支
如果存在我们自己的远程分支仓库和老板的远程分支仓库,那么直接按需点击操作就可以了
如果没有,直接通过可视化的创建即可,具体按钮位置如下
7.3 拉取最新代码
开发前首先拉取老板GitHub那里的最新代码
所以我们要切换到老板的远程分支
切换后会自动拉取更新,如果没有,手动选择拉取即可
7.4 提交本地修改代码到自己的远程仓库
更新之后就可以按照需求进行代码的修改
修改完成之后就是我们之前的commit add push pull等操作了
这也是vscode优势的地方
我们一定确认,切换到了我们自己的远程仓库,不然一个push pull可能就直接到老板那里了(都是泪
假设我们进行了修改,新建了一个文件
然后在git管理中就可以看到我们的更改
我们把需要提交的更改,点击暂存按钮,相当于我们之前的add
消息中备注修改,相当于我们之前的commit添加备注消息
然后点击提交即可完成操作
提交中有很多可选项,可以提交推送,就会直接把本地更新代码到自己的远程仓库
点击提交和同步会先从远程进行拉取然后再进行推送更新到自己的远程仓库
过程中会出现确认按钮
提交或者同步之后,我们就可以看到自己远程仓库的更新了
完结,撒花~