GIT
git的组成:分布式,版本控制,软件
svn
是集中式版本控制,而git
是分布式版本控制
- 问价拷贝
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
第一阶段:生成版本,扩展功能,版本回滚
命令:
1.git init ----- 初始化生成.git文件进行管理
2.git status ------检测当前文件的文件状态,也显示当前文件夹内的文件名称,管理后的文件是绿色,未管理的是红色,也可以进行文件检测,检测文件是否被修改,如若修改则直接变成红色.
3.git add 文件名称 ---- 进行管理文件
4.git add . ----管理当前文件夹所有未管理的文件
5.git log -----查看版本记录
6.git --version ------检查版本号
7.git commit -m "描述信息"-----生成版本
git三大区域:
工作区:
1.已经管理的和修改/新增文件
暂存区:git add . 表示把工作区文件提交到暂存区
版本库:git commit 表示把暂存区文件提交到版本库
回滚:
git reset --hard 版本号
git reflog ------用于查看的所有的操作及版本过程
工作区内调度:
git checkout -- <file> 修改文件变成管理文件,剔除修改内容
git reset HEAD <file> ---把问价从暂存区返回到工作区
第二阶段:分支
线上出BUG时,创建分支修复BUG,然后合并到主分支上.
git branch ----- 用户所处在的分支
git branch dev ---- 创建新分支dev
git checkout dev ---切换到dev分支
git merge dev ---合并分支dev到master主分支
CONFLICT (content): Merge conflict in git_tes/templates/index.html
可能会带有冲突,这时须手动解决.
git status ----查看改动
git commit -m "备注"
英文状态下q表示退出
git branch -d 分支名 ----删除分支
工作流
不在master分支上开发
github:代码仓库,gitlab
1.注册账号
2.创建仓库
3.本地代码推送远程仓库
github做代码托管
1.创建仓库
2.推送代码
git remote add origin https://github.com/PythonerIron/gittest0912.git
git push -u origin master
也可以推送其他的分支
git push -u origin dev
3.克隆代码
git clone https://github.com/PythonerIron/gittest0912.git
已经clone了所有分支,但是只显示master分支,可以直接Git checkout dev进行操作
怎么去开发?
1.创建分支dev
2.切换到dev分支
3.将master分支代码复制git merge master
4.进行开发 touch a1.py
5.git add.
6.git commit -m "01day"本地生成控制版本
7.git push -u origin dev
8.回家继续,远端更新
9.git checkout dev
10.git pull origin dev
11.开发,提交代码
git pull origin dev 等价于
git fetch origin dev
git merge origin/dev
rebase(变基)
#将多个记录整合成一个记录
1.git rebase -i 版本号-----将最新的版本号和当前rebase后的版本号之间合并.
2.git rebase -i HEAD~3 整合三条
注意:合并是不要合并已经push的文件
#分支合
git log --graph --pretty=format:"%h %s"画图式显示
* f52d0b5 Merge branch 'master' into dev
|\
| * a050c14 master test01
* | f408a0f dev test
|/
* 4ecd59b dev new.py
* 27ca536 dev分支上线
* 7a4e949 04
* 885d61d 03
* 94ed499 02
* 1a87782 01
分支合并,在dev merge master,然后在master merge dev
#分叉
家:v2 公司:v1 如若在公司拉代码v2会造成分叉,此时,
git fetch origin dev
git rebase origin/dev
#注意事项:git rebase产生冲突,解决冲突
git add .
git rebase --continue
beyond compare文件对比,快速解决冲突
在git中配置
git config --local merge.tool 名字bc3
git config --local mergetool.path '安装目录E:\Beyond Compare 4'
git config --local mergetool.keepBackup false
应用beyond compare解决冲突
git mergetool
怎么多人开发?
每个人都有自己的分支上进行开发,然后没两天就要合并一下处理冲突.
检查代码review
gitflow
工作流
tag(打标签)master分支上打标签
git tag -a v1 -m "第一版本"------版本v1 和版本的信息描述
git push origin --tags -----将版本推送到github
创建dev并且切换到dev分支
git checkout -b dev 这是已经在自己的电脑上了
还需要将自己本地的代码推送到远程,github才会显示这个分支
git push origin dev
github
中组织的权限settings
默认是只读
开发人员克隆代码
git clone 地址
在dev分支上继续开一个分支
开发完成时,需要代码review
测试过程
git checkout -b release
git push origin release
git branch -d release 删除release分支
运维人员下载代码做上线
git clone -b v2 地址
怎么在开源的代码贡献自己力量
1.在github中fork待贡献代码
2.类似于二次开发,在自己的仓库进行修改
3.给源代码作者提交修复bug的申请
配置文件
配置用户名和密码
1.在当前的项目生效,在其他的项目就不生效
项目的配置文件在.git/config
git config --local user.name 'ashley"
git config --local user.email "ashely@qq.com"
2.全局配置文件,所有的项目均可通用
项目文件配置在 ~/.gitconfig
git config --global user.name 'ashley"
git config --global user.email "ashely@qq.com"
3.系统配置文件,需要有root权限
项目文件配置在 /etc/.gitconfig
git config --system user.name 'ashley"
git config --system user.email "ashely@qq.com"
免密登录
1.URl实现
原来的地址:https://github.com/Qingdaodianye/QD-.git
免密登录:https://用户名:密码@github.com/Qingdaodianye/QD-.git
2.通过ssh实现
ssh地址:git@github.com:Qingdaodianye/QD-.git
2.1自己生成公钥和私钥,默认声称在当前根目录下的~/.ssh/id_rsa.pub(公钥)和id_rsa(私钥)
ssh-keygen
2.2拷贝公钥内容设置在github的settings中
2.3在git本地中配置ssh地址
git remote add origin git@github.com:Qingdaodianye/QD-.git
git忽略文件
遇见不希望被管理的文件时,我们应该忽略这样的文件
1.创建.gitignore文件
vim .gitignore
写入不需要管理的文件名例如a.py
也可以写入自己.gitignore
2.
*.h
!a.h
files/
*.py[c/d/ds]
任务管理
issues
用于问题汇总,避免重复回答,也有bug管理
wiki
写一些项目相关的东西文档之类的,用于之后有新人进来便于理解项目