github 邮箱_VSCode_Git_Github_ 基本操作(fork+pull request)

764d8efe752fd1e5ad8d74646934ccea.png

主要内容:

  • 基本设置:用户名&账户、SSH KEY
  • 自己维护的repo:Github新建repo、本地设置 remote 地址、首次 pull、日常 pull & push
  • 向其他repo提交特性:设置 upstream 上游地址、pull request
  • 接收pull request时:项目原作者如何处理 pull request 冲突

I. 基本设置:用户名&账户、SSH KEY

1.1 设置用户名&账户

全局参数,即所有本地 repo 的默认参数:

git config --global user.name ""your_name"  %全局repo用户名,尽量有意义
git config --global user.email "your_email" %全局repo邮箱

局部参数,仅在当前 repo 有效,适用于公司项目放在Gitlab的情形

git config user.name "your_name"   %局部repo用户名
git config user.email "your_email" %局部repo邮箱

补充:

git config --global user.name % 查看全局用户名(两条横线)
git config --global user.email % 查看全局邮箱(两条横线)
git config user.name % 查看局部用户名
git config user.email % 查看局部邮箱

git config --list % 列出的是全局和局部参数,但使用时优先使用局部参数(两条横线)

1.2 SSH KEY

目的:下载(clone或pull)项目时,不需每次输入密码。

基本操作:本地生成密钥对 - 在Github上设置公钥 - 修改本地repo的remote为SSH地址

% 本地生成密钥对
$ ssh-keygen -t rsa -C youremail@example.com

C用户目录,找到 .ssh 目录,然后找到 id_rsa id_rsa.pub 这两个文件,复制id_rsa.pub 文件内容

c20555ac88f14c31c0837b09f38187a7.png


Github 上添加 SSH Key 公钥,将 id_rsa.pub 内容粘贴在 Key 一栏中,保存即可。

75e2013f7d0e4e43ecffc876ffe9c46b.gif
将id_rsa.pub 内容粘贴在 Key 一栏中

附录:

当尚未添加SSH KEY也并未输入过账户和密码时进行 pull 和 push 会发生什么?

  1. remote添加为https地址

07f9c0ca132d515ab7a3e7fa83186e0c.png

33b4ed2535e42d02b1888c6abc15431e.png

输入密码后,Github账户中会新建一个针对当前设备Personal access tokens

5d8f74acd30744c67ba5668f76e9f60b.png
Personal access tokens

2. 将remote添加为SSH地址

d962cc3bfb066e44e611018aacb0c6fd.png

1e02f22697557b036c1d18220d857137.png
提示没有权限

II. 自己维护的repo:Github新建repo、本地设置 remote 地址、首次 pull、日常 pull & push

日常情形:本地项目首先出现,利用git进行版本管理一段时间后上传至Github。

2.1 Github新建repo

不赘述。

2.2 本地设置 remote 地址

git remote add origin https://gitee.com/kingCould/HelloWord.git % origin 为远端账户名称,可以任意指定,https://gitee.com/kingCould/HelloWord.git为远端地址
git remote -v % 列出所有remote地址(一条横线)

git remote remove origin % 删除origin账户

git push origin --delete test % 删除远端分支,test 是远端的Branch名称
git push -f % 删除分支时可能需要force强推

2.3 首次 pull

git push -u origin master % origin需要与创建的远端仓库名称一致

2.4 日常 pull & push

git pull origin master % master为分支名称
git push origin master

2.5 本地已经进行了一部分提交,github并未创建repo时

首先github新建repo

然后强推:

首先:
git pull origin master --allow-unrelated-histories % 允许两个不相关的分支进行合并,但这样一定会出现initial

然后,本地拉取上游initial然后reset hard至本地最后一次commit,接着:
git push origin master -f

补充:

git branch -a % 列出所有分支

如果提交时显示尚有未完成的merge,键入:
git merge --continue

III. 向其他repo提交特性:设置 upstream 上游地址、pull request

10df87d85e97601b16c94b6c572bd180.png

基本流程:fork - clone fork项目 - 新建分支 - 开发过程中时常对上游分支进行pull+rebase 本地 master - 开发完成push到fork项目 - pull request

3.1 fork 并 clone 项目到本地

在github上fork
git clone https://github.com/lonelybag-clone/MATLAB_DEMO.git

3.1 设置 upstream 上游地址

git remote add upstream git@github.com:lonelybag/dev-play.git % upstream 为远端名称,可以任意指定,git@github.com:lonelybag/dev-play.git为原作者项目地址
git remote -v % 列出所有remote地址(一条横线)

3.2 对上游 upstream 的 master 分支进行 pull + rebase

lonelybag:VSCode_Git_操作(rebase+revert+reset)​zhuanlan.zhihu.com
db9c2ede7e37cba49d98716b371a3a3f.png

基本步骤:git fetch upstream - git checkout master - git rebase upstream/master

3.3 Pull request

53476c15608349e4c6180659de198a9f.png
点击Pull request

a635e6d7641d7ba98bf4728299c95706.png
进行确认

613cc82b059222b9f095f6a5bdc142ca.png
创建PR(Pull request)

等待邮件即可。

VI. 接收pull request时:项目原作者如何处理 pull request 冲突

基本步骤:克隆fork作者的项目到本地的新分支 - 解决冲突 - 将分支融合到自己的master - push到远端 - 此时PR将显示可以自动合并

参考

  • Understanding the GitHub flow
  • A successful Git branching model
  • 团队协作中的 Github flow 工作流程
  • 带你一步一步看懂Git图谱 - 掘金
  • http://www.ruanyifeng.com/blog/2012/07/git.html
  • GitHub 的 Fork 是什么意思?
  • https://blog.csdn.net/qq_33429968/article/details/62219783
  • https://blog.csdn.net/Scythe666/article/details/80268652

关于作者

目前电气工程硕士在读,平常喜欢琢磨有限元仿真、Matlab、Latex、三维建模等一切有趣的东西

一些成果会放在 Github 或者 知乎,也欢迎通过邮箱联系我 dongweihao514@sina.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值