GitHub
常用
拉取分支
git clone -b dev http://xxxx.com
- 通过上面的方法无法获取其他分支内容,仅能获取指定分支,fetch可以拉取所有分支
git init
git remote add origin http:// xxxxx.com
git fetch
git checkout dev
提交代码
git status
git add .
git commit -m "fix"
git push
- 你还可以通过vscode的源代码管理进行提交拉取代码
删除不需要的分支
删除本地分支
$ git branch -d 会在删除前检查merge状态(其与上游分支或者与head)。
$ git branch -D 是git branch --delete --force的简写,它会直接删除。
修改commit的message
修改最近的commit的message
$ git commit --amend 修改最新的commit
$ git log 查看
修改老旧的commit的message
$git log 查看往期提交commit
$git rebase -i commitID
将连续的多个commit整理成1个
$ git log --graph 查看下提交的commit
$ git rebase -i commitID
将间隔的多个commit整理成1个
$ git log --graph 查看下提交的commit
$ git rebase -i commitID
比较工作区、暂存区、和HEAD
比较暂存区需要提交的文件与HEAD文件
$ git add .
$ git status
$ git diff --cached
$ vi xxxx文件
$ git add .
$ git diff -cached
$ git commit -m " xxxxxx "
$ git log
比较工作区与暂存区的文件
$ git diff
恢复暂存区与HEAD一样
$ git reset HEAD
恢复工作区与暂存区一样
$ git checkout -- index.html
取消暂存区部分文件的更改
$ git reset HEAD -- style.csss
消除最近几次的提交(回退commit, 彻底从git仓库消失)
$ git reset --hard commitIDxxxxxx
看看master分支与其他分支的差异
$ git diff master dev
$ git diff master dev --index.html
正确删除文件(例如删除readme)
$ git rm readme
$ git reset --hard HEAD
开发中临时加塞了紧急任务(暂时将手头任务存储起来,处理紧急任务)
$ git stash
$ git stash list
...
$ git stash apply
$ git reset --hard HEAD
$ git stash pop
暂存代码合并dev分支后merge
$git stash
$git checkout dev
$git pull
$git checkout my_issue
$git merge dev
$git stash pop
如何指定不需要git管理的文件(例如node_moudles build.zip等)
$ mkdir doc
$ echo 'hi' > doc/readhim
$ git status
$ vi .gitignore
=================
doc
=================
$ git status
$ vi .gitignore
=================
doc/
=================
$ git status
$ echo '12345678' > doc
$ cat .gitignore
$ git status
$ git .gitignore
=================
doc
=================
$ git status
如何将git仓库备份到本地
$ git clone --bare url地址
$ git clone -b dev http://10.1.1.11/service/tmall-service.git
$ git remote add xxxxx 仓库地址
$ git branch -av
$ git push xxxxxx
git与gitHub的同步
配置公私钥
$ cd ~/.ssh
$ ls -al
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
+ 将公钥信息粘贴到github中
建立仓库与远端连接
$ git remote add github xxxxxxxxxxxxx地址
$ git remote -v
$ git fetch gitub master
$ git git checkout master
$ git merge --allow-unrelated-histores github/master
$ git pull
$ git push github --all
$ git push github master
git单分支多人集成协作开发的常用命令
不同人修改不同文件
不同人修改同文件的不同区域
不同人修改了同文件的同位置
$ git pull
$ git merge
$ git commit -am "xxx"
$ git push
同时变更了文件名和文件内容
$ git pull
$ wq!
$ git push
把同一文件修改成了不同文件名(分别修改index.htm为index1.htm,index2.htm)
$ git pull
$ git status
$ git rm index.htm
$ git status
$ git add index1.htm
$ git rm index2.htm
$ git commit -am "Decide to mv index to index1"
$ git push
git使用禁忌命令
$ git push -f
gitHub的核心功能
- Code review 代码审查
- Project management 项目管理
- Integrations 集成
- Team management 团队管理
- Social coding 开源
- Documentation 文档
- Code hosting 代码存放
如何在gitHub上高效搜索我们需要的开源
- 在github上可以进行高级搜索
- 在搜索框可以使用 xxxxx in:readme
- 在搜索框使用 stars:>1000
- 在搜索框使用 ‘after_script:’+‘stage:deploy’ filename:.gitlab-ci.yml
- 可以搜索在文件名gitlab-ci.yml文件内 执行完脚本以及开始ci设计deployed的项目
使用github 进行团队协作
创建团队项目
- create a new repository
- 设置.gitignore
- 设置许可协议
- 在 settings中 Create new Team 并且设置访问权限
选择工作流
- 主干开发(推荐)
- 适用于成员能力强,需要快速迭代,沟通流畅,用户升级组件成本低的环境,能够获取CI/CD的所有好处
- GIt Flow (不推荐 过于复杂)
- 适用于不具备主干开发能力,有预定的发布周期,需要严格执行发布流程
- GitHub Flow
- 适用于不具备主干开发能力,随时集成随时发布;分支集成时经过代码评审和自动化测试,就可以立即发布.
- Gitlab Flow(带生产分支)
- 适用于不具备主干开发能力, 无法控制准确的发布时间,但又要求不停地集成
- Gitlab Flow(带环境分支)
- 适用于不具备主干开发能力,需要逐个通过各个测试环境的验证才能发布
- Gitlab Flow(带发布分支)
- 适用于不具备主干开发能力,需要对外发布和维护不同版本
Issues
使用projects管理 issues
如何进行code review
- settings中可以进行master分支保护
- Branches
- Apply rule to 输入master
- 选择code review人数
- 再对master进行merge时,就需要人员进行review
20210712 新增commit提交前缀
- ‘build’, // 发布版本
- ‘chore’, // 改变构建流程、或者增加依赖库、工具等
- ‘ci’, // 持续集成修改
- ‘docs’, // 文档修改
- ‘feat’, // 新增功能
- ‘fix’, // 修复缺陷
- ‘perf’, // 优化相关,比如提升性能、体验
- ‘refactor’, // 代码重构
- ‘revert’, // 回退版本
- ‘style’, // 并不是样式的修改,这里的style指的是代码风格的改变
- ‘test’, // 测试用例修改
- ‘merge’ // 分支合并