2.基本概念
- git:分布式版本管理工具
- github:一个网站,大型代码托管平台
- gitlab:基于git的代码管理软件
- code review:代码评审 Code Review主要分两类:一个就是技术专家人工review;第二个就是借助程序自动检查代码。在 GitHub上你们能够到Market Place找找质量相关的app,好比代码静态检查等app,让它在pull request的时候发挥做用,帮助团队作review
- 集成分支:通常是master分支
- pull requests:是从本身的分支合并代码到集成分支
- release项目的发布
- jenkins的使用,至关于redis,须要本身搭建本地服务进行管理使用
- 暂存区,不是正式提交
3.github开源项目搜索技巧
- Advanced search
- 关键词 in:readme stars:>1000
4.git的安装和配置
- 安装: git-scm.com/book/en/v2/…
- 配置用户名和密码: git config --global user,name 'user.name'/ git config --global user.email 'user.email'
- 查看配置:git config --global --list
5.git的基本命令
- 1.已有项目须要归入git管理--cd 项目全部文件夹:git init
- 2.新建项目进行git管理 -- cd 某个文件夹/git init 项目名/cd 项目名
- 3.git add 文件名---将文件提交到暂存区
- 4.git commit -m "进行变动说明"
- 5.git status/git log
- 6.git add -u表示已经被git跟踪的更改能够一会儿所有放在暂存区提交
- 7.git add -u:将文件的修改、文件的删除,添加到暂存区。 git add .:将文件的修改,文件的新建,添加到暂存区。 git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区。 工做中通常是用到 git add . 或者 git add -A, git add -A相对于git add -u命令的优势 : 能够提交全部被删除、被替换、被修改和新增的文件到数据暂存区,而git add -u 只能操做跟踪过的文件 git add -A 等同于git add -all
- .git文件内容:HEAD:表示当前工做的分支config:配置文件,local用户名 refs/heads:存放分支
- head会指定到某一个commit,包括指向新得分支得commit 10.git diff head head^ 当前head和上一次head的比较 11.指定不须要用git管理的文件----在仓库中建立.gitignore文件
6.文件重命名
- 1.原来的作法,首先工做区重命名,而后提交暂存区,删除暂存区原来的文件git rm 文件名
- 2.git reset --hard 暂存区工做目录全部的变动将会清除
- 3.直接使用git mv readme readme.md
7.日志操做
- 1.git log -n4 --oneline最近4次操做
- 2.git log --oneline --all 全部的
- 3.git log --oneline --all --graph 图形化
- 4.本节的一些演示命令总结 • git log --all 查看全部分支的历史 • git log --all --graph 查看图形化的 log 地址 • git log --oneline 查看单行的简洁历史。 • git log --oneline -n4 查看最近的四条简洁历史。 • git log --oneline --all -n4 --graph 查看全部分支最近 4 条单行的图形化历史。 • git help --web log 跳转到git log 的帮助文档网页
8.分支管理
- 1.git branch -v 查看版本分支
- 2.git branch -av 查看包括远程分支
- 3.git checkout 分支名:切换分支
- 4.建立新分支:git checkout -b 分支名
- 5.切换分支:git checkout master 查看所有分支:git branch -av 删除分支:git branch -d 分支名 (-D:强制删除) 6.分支的做用:前端和后台分为不一样的分支 7.图形化管理 gitk ---author和committer不一样之处在于:从master复制到tmp分支,会保留master的做者
9.提交修改
- 1.针对最后一次的提交修改message ----- git commit --amend
- 2.针对老旧的commit的message进行修改------ git rebase -i 要修改父节点的id
10.暂存区/工做区/head
- 1.暂存区和head比较:git diff --cached
- 2.工做区和暂存区比较:git diff 查看全部文件的差异 /git diff --文件名 查看指定文件 工做区和暂存区的差异
- 3.暂存区覆盖工做区的修改----暂存区的内容都不要:git reset HEAD
- 4.暂存区覆盖工做区的修改--git checkout
- 5.取消暂存区部分文件的更改--git reset HEAD --文件名
- 6.删除最近几回提交 --- git reset--hard hash值(hash值是要删除提交上一次的hash值)
11.github的使用
- 1.建立分支,修改内容,提交请求,合并分支
- 2.公私钥的建立--查看有没有设置公私钥-- ls -al ~/.ssh
- 3.在本地设置密钥:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 4.公钥:~/.ssh/id_rsa.pub ---私钥:~/.ssh/id_rsa
- 5.远端站点---git remote add github(站点名) github.com/git201909/g…
- 6.fetch:从远端拉数据到本地 /push:将本地数据上传到远端
- 7.删除远端站点:git remote remove 站点名
- 8.从本地仓库push到远端仓库---git push 站点名 --all
- 9.git pull 将远端分支的内容拉到本地,而后与本地分支合并
- 10.将远程代码fetch到本地 git fetch 站点名 分支名
- 11.将远端master分支合并到本地分支 git merge github(站点名)/master(分支名)
- 12.当本地master分支和远端分支不同时,可是想要将本地master 分支 merge到远端分支---git merge --allow-unrelated-histories github(站点名)/master(远端分支名)
- 13.将本地master分支push到远端分支---git push github(远端站点名) master
- 14.git remote -v 查看远程版本库信息 git remote add githup 添加githup远程版本库 git fetch githup 拉取远程版本库 git merge -h 查看合并帮助信息 git merge --allow-unrelated-histories githup/master 合并githup上的master分支(两分支不是父子关系,因此合并须要添加 --allow-unrelated-histories) git push githup 推送同步到githup仓库 15.fast-forward:两个分支合并时,target分支若是是source分支的祖先,那么这两个分支就是 fast-forword的关系
12.分支合并冲突问题
- 1.当两我的同时对github上master分支进行修改的时候,修改不一样文件---两个用户同时获取拉取了master的代码--一个用户修改文件已经提交,另外一个用户再次push的时候会出现提交异常
<1>首先:1.将远端分支fetch下来--git fetch github <2>再次:2.合并分支 <3>最后:3.push分支到远程前端
- 2.当两我的同时修改了一个分支的同一个文件不一样区域--一我的修改以后push,另一我的push的时候会发送冲突
<1>1.将远端fetch下来,而且merge本地和远端---git fetch github <2>git merge 远程分支,将远程分支和本地分支合并 <3>push到远程:git push githubgit
- 3.当两我的同时修改了同一分支的同一文件的同一区域
<1>github fetch github <2>merge远程分支,合并分支的时候会发生冲突,解决冲突,修改以前修改的文件,而后提交github
git push -f 协同工做通常禁止使用web