主要内容:
- 基本设置:用户名&账户、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 文件内容
在 Github 上添加 SSH Key 公钥,将 id_rsa.pub 内容粘贴在 Key 一栏中,保存即可。
附录:
当尚未添加SSH KEY也并未输入过账户和密码时进行 pull 和 push 会发生什么?
- 将remote添加为https地址
输入密码后,Github账户中会新建一个针对当前设备的 Personal access tokens
2. 将remote添加为SSH地址
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
基本流程: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基本步骤:git fetch upstream - git checkout master - git rebase upstream/master
3.3 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