Git 教程指南
Git 工作流
Git 与 SVN 区别
如何正确提交PR
1.1 如何发起 pull request
推荐 GitHub
使用工具,建议 WebStorm , Sourcetree ,命令行( window 加强 CMD
工具 Cmder ,建议不要下载那个客户端。
- GitHub 如何创建 pull 请求
- GitHub 的 pull request 是指什么意思?
- 利用 WebStorm 来管理你的 GitHub
- 使用 WebStorm 上传代码到 GitHub
- Git本地项目上传 & SourceTree & GitHub 简单使用
- GUI for Git|SourceTree|入门基础
- SourceTree 使用
- Git工作流的最佳实践总结
1.2 如何提交:
整个流程(以下举例,其中我为giscafer
用户):
我先 fork
了 crm/crm-platform
的仓库,然后我从我的仓库克隆到本地修改,修改完后提交到我的仓库,然后我再申请 pull request
,crm/crm-platform
同意合并后其实整个过程就完了,但是 crm/crm-platform
经常会有更改就需要我刚那一步在我本地同步一下你的远程仓库,同步后再提交到我的仓库。
具体代码:
# 列出远程仓库 URL
$ git remote -v
# List the current remotes (列出当前远程仓库)
# origin https://git.yourcompany.com/user/crm-platform.git (fetch)
# origin https://git.yourcompany.com/user/crm-platform.git (push)
# 设置一个新的远程仓库
$ git remote add yourcompany git@git.yourcompany.com:crm/crm-platform.git
# 再次列出远程仓库 URL
$ git remote -v
# yourcompany git@git.yourcompany.com:crm/crm-platform.git (fetch)
# yourcompany git@git.yourcompany.com:crm/crm-platform.git (push)
# origin git@git.yourcompany.com:giscafer/crm-platform.git (fetch)
# origin git@git.yourcompany.com:giscafer/crm-platform.git (push)
# 获取上游代码
$ git fetch yourcompany
# 检查你的 fork’s 本地 master 分支,如果不在 master 分支就切换到该分支
$ git checkout master
# Switched to branch 'master'
# 合并来自 yourcompany/master 的更改到本地 master 分支上。
$ git merge yourcompany/master
1.3 提交之后:
提交合并到 crm/crm-platform
之后,为了保证与主仓库代码的一致性,还需要进行一次本地与远程仓库的手动更新。
基本操作练习
名词解析:master(默认开发分支)
、origin(默认远程版本库)
、本地分支
、远程分支
、Fork仓库
、远程仓库
、远程原仓库
- (0)如何新建分支:远程分支&本地分支,以及分支之间切换?
- (1) 如何删除本地分支?如何删除远程仓库分支?删除标签?
批量删除远程分支,带greenkeeper
前缀的分支:
git branch -a | grep -o "greenkeeper.*" | xargs -I {} git push origin :{}
- (2) 本地分支如何推送远程仓库分支?
git push scm 「分支名称」:「分支名称」
- (3) 根据tag创建新的分支.
git branch <new-branch-name> <tag-name>
- (4) 如何更新
远程来源主仓库
分支最新代码到Fork仓库
分支?(「fork 出来的仓库」和「最新版本的原仓库」内容同步更新)
添加remote仓库,pull对应分支,再 push 到fork仓库
- (5) 如何合并Fork仓库某分支代码到原仓库某分支?
非主程序员只能用PR方式:本地分支的改动代码push到远程分支对应分支后,再通过PR方式请求合并到原仓库分支。PR之前,建议更新最新代码,避免冲突的可能(就是执行步骤4)
资源
相关文章
Git命令大全
详细阅读文章:Git速查表
Git速查表
git rebase 合并提交(修改已提交信息)
比如Github上的开源项目,要严格要求,一个功能点feat
或者,一个bug
修改,代码修改好,测试没问题,一次性提交修改的文件(只允许一个commit)
举例一个PR中commit两次的操作,然后工程维护者建议修改提交信息重新PR:https://github.com/NG-ZORRO/ng-zorro-antd/pull/78
规范性的PR约束
commit 信息不是乱填的,PR 标题也不是乱填的。可以参考开源工程的一些约束说明:CONTRIBUTING.md