git命令
git学习和博客搭建的相关资源
1. hexo搭建博客的相关参考博客
a.如何在本地库增加新的博客
b.如何搭建博客
https://segmentfault.com/a/1190000017986794
c.hexo的常见命令
https://vel.life/Hexo-%E5%8D%9A%E6%96%87%E7%BC%96%E8%BE%91%E6%89%8B%E5%86%8C/
托管中心维护远程库
- 内网:可以自己搭建一个GitLab服务器
- 外网:可以使用码云、Github
版本控制工具
- 集中式:CSV ,SVN,VSS
- 分布式:Git,Darcs,…
Git命令行操作
1.1本地库初始化
进入文件夹
1 | git init |
1.2设置签名
项目(仓库)级别
仅在当前本地库有效
1
2git config user.name tom #设置用户名tom
git config user.email liu@qq.com #设置用户邮箱系统用户级别
仅在当前登录的操作系统用户有效
1
2git config --global user.name tom
git config --global user.email liu@qq.com
仅仅加了一个
--global
优先级别:
项目级别
>系统级别
信息保存位置:
~/.gitconfig 文件
1.3基本操作
1.3.1 状态查看
1 | git status #查看工作区、暂存区状态 |
1.3.2 添加
1 | git add fileName |
1 | git rm --cached filename |
1.3.3 提交
1 | git commit -m 'commit message' fileName |
文件修改之后
- 要先git add加到暂存区中,之后再添加到git commit
- 或者直接使用 git -a commit filename 这时本次提交不能撤回(git rm /*)
1.3.4 查看历史记录
1 | git log #查看提交的日志,包括时间,提交的说明信息 |
哈希值+指针移动量+提交的说明信息
多屏控制的方式:
1.空格向下翻页 ,b向下翻页 ,q退出
1.3.5 前进后退
基于索引值
推荐
1
2git reset --hard 指针位置
例子:git reset --hard a6ace91 #回到这个状态,a6ace91指的是日志的短的索引值使用 ^ 符号
只能后退
1
2
3git reset --hard HEAD^
例子:git reset --hard HEAD^^
注意:几个 ^ 表示后退几步使用 ~ 符号
只能后退
1
2git reset --hard HEAD~n
例子:git reset --hard HEAD~3
1.3.6 reset的三个参数比较
1 | soft: |
1.3.7 删除文件并找回
- 相当于建立一个快照,虽然删除了,但只要添加到暂存区,就能找回
1 | git reset --hard 指针位置 |
1.3.8 文件差异比较
1 | git diff 文件名 #将工作区中的文件与暂存区中的文件进行比较 |
2.2 分支管理
hot_fix
master
feature_x
feature_y
2.2.1 什么是分支管理
- 在版本控制中,使用推进多个任务
2.2.2 分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 某一分支开发失败,不会对其它分支有任何影响
2.2.3 分支操作
- 创建分支
1 | git branch 分支名 |
- 查看分支
1 | git branch |
- 切换分支
1 | git checkout 分支名 |
- 合并分支
相当于把修改了的文件拉过来
1 | git merge xxx |
- 删除分支
1 | git branch -d 分支名 |
2.2.4 解决冲突
- 冲突的表现
- 冲突的解决
- 第一步:编辑,删除特殊标记
<<<
===
- 第二步:修改到满意位置,保存退出
- 第三步:添加到缓存区
git add 文件名
- 第四步:提交到本地库
git commit -m '日志信息'
注意:后面一定不能带文件名
- 第一步:编辑,删除特殊标记
Git 结合Github
别分手
别名 分支名
1.1 创建远程库地址别名
1 | git remote -v |
1.2 推送
开发修改完把本地库的文件推送到远程仓库
前提是提交到了本地库才可以推送
1 | git push 远程库别名 分支名 |
1.3 克隆
完整的把远程库克隆到本地
克隆下来后不要在主分支里面做开发
clone进行一次,从无到有的过程,更新用pull
1 | git clone 远程地址 |
1.4 拉取
本地存在clone下来的文件 就用pull更新
1 | pull = fetch + merge |
1.5 解决冲突
注意:解决冲突后的提交是不能带文件名的
如果不是基于远程库最新版做的修改不能推送,必须先pull下来安装冲突办法解决
1.6 rebase
提交记录简洁不分叉
没学懂,感觉有点鸡肋
混眼熟
1 | git rebase -i 索引号 |
1.7 beyond compare
用软件解决冲突
1 | 1.安装 : |
1.8 跨团队合作
代码review之后合并
适用于个人
邀请成员:
Settings
–>Collaborators
–>填写用户名
–>打开链接接受邀请
企业
创建一个组织
方便管理
review
组织做review
通过Pull request
给开源社区共享代码
点击别人仓库的fork 到自己的仓库
– >然后clone下来 修改后推送到远程库
–>点击Pull Request请求
–>Create pull request发消息
1.9 Tag标签
为了清晰的版本管理,公司一般不会直接使用commit提交
1 | git tag -a v1.0 -m '版本介绍' #创建本地tag信息 |
1.10 SSH 免密登录
- 输入:
ssh-keygen -t rsa -C GitHub邮箱地址
- 进入
.ssh
目录,复制id_rsa.pub
文件内容 - 登录GitHub。
Settings
–>SSH and GPG keys
–>New SSH Key
- 回到git通过ssh地址创建。
git remote add 别名 SSH地址
Git工作流
1.1 概念
1 | 在项目开发过程中使用Git的方式 |
1.2 分类
1.2.1 集中式工作流
1 | 像SVN一样,集中式工作流有一个中央仓库,所有的修改都提交到了Master分支上 |
1.2.2 GitFlow工作流 *
主干分支master
开发分支develop
修复分支hotfix
预发布分支release
功能分支feature
1 | GitFlow 有独立的分支,让发布迭代过程更流畅。 |
1.2.3 Forking 工作流
1 | 在 GitFlow 基础上, 充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。 |