项目需要,安排在GitHub仓库更新代码分支
在Windows环境下,通过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: 对系统的所有用户有效
首先查看电脑之前是否生成过密钥,避免后续命名出现记忆错误
最稳妥的就是提前删除电脑中存在的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”按钮完成配置。
如果在~/.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
执行命令
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
因为没有指定克隆的目录,所以会提示错误,不过能打印出来信息证明clone功能正常
现在github出于安全的考虑,将在2021年8月停止使用账号和密码的方式访问github仓库,改为token认证的方式。
登录github,生成token令牌进行认证。
输入登录密码
填写描述、过期时间、选择权限范围
复制令牌并保存起来(只会出现一次,之后将不会再次出现)
PR 的全称是Pull Request,经常用 Github 的同学对这个肯定很熟悉了。Github 聚集了4000万开发者,过亿的开源项目,如果想给别人的开源仓库贡献代码,通常是先 fork 别人的项目,然后本地修改完成提交到自己的个人 fork 仓库,最后提交 PR 等待别人合入你的代码。
Github 的工作流:
fork 工作流
我们重点看一下第6步,小明写完代码了想合入到原作者的仓库,新建了一个“pull request”,拉请求?这明明是推啊,小明将自己的修改推到原作者的仓,感觉叫“push request”比较合适吧。
既然 Github 坚持叫“pull request”,我们试着理解一下它的思路,小明写完代码了心里肯定是在想:原作者大神,我改了点东西,你快把我的修改拉回去吧。站在原作者的角度思考,叫pull request好像也说得过去,每天有大量的人从我这里 fork 代码走,我只会拉取我感兴趣的代码回来。
fork小红在GitHub上的Repository到小明的GitHub
点击右上角的fork按钮就可以把代码全部复制到自己的Repository
打开刚才fork的Repository,复制该Repository的SSH使用命令
git clone git@github.com:Sheng-ZM/tms-go-apihub
默认地址是 ~ ,即下载文件夹到了C:/用户/用户名/
命令查看一下小明的本地Repository与哪些远程仓库建立了链接
git remote -v
发现:只与小明在GitHub的Repository建立了链接,很显然没有与小红在GitHub上的Repository建立链接,如下图:
使用命令
git remote add upstream https://github.com/jasony62/tms-go-apihub/
再次查看
git pull https://github.com/jasony62/tms-go-apihub.git main:shengzm-branch
git fetch upstream
git merge upstream/main
使用命令:
git checkout -b shengzm-branch
新建并切换到新建的分支 shengzm-branch;
使用命令:
git branch
查看当前所在分支。
比如在我们的当前目录tms-go-apihub新建文件夹和文件
test_shengzm/hello.go
需要通过add命令添加新建的文件
git add test_shengzm/
直接添加文件夹会提示风险,可能会发生替换和覆盖
也可以具体到具体的文件
git add test_shengzm/hello.go
git commit -m "第一次测试上传"
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完成后,可以登陆网页查看上传情况,如图所示
a.到小明的GitHub的Repository上点击Pull Requests,再点击New pull requests按钮;
如下图:
b.进入Comparing changes界面。
a.点击Create pull request按钮;
b.填写相关信息,在点击Create pull request按钮即可。
这是老板的任务了。