全世界最牛批的分布式版本管理工具
一、搭建git环境
- 从git官网下载,在安装选择时,第二次选择选第三个选项(避免回车符问题)
- 在命令行里设置git的配置信息(用户名和邮箱),之后的提交都会用这两个信息
可通过git config --list 来查看git 环境参数配置 - 初始化一个git仓库 git init
- 添加自己的改动
-
将改动从工作区域同步到暂存区域
git add . -
将改动从暂存区域同步到本地git仓库
git commit -m "commit info" -
上传本地git代码到远端(第一次需要设置远端的github/gitlab地址)
git remote add origin git@github.com:Boomxiakalakaka/git-learning.git
git push -u origin master
二、开发常用操作
1. checkout(覆盖)
数据流动: 暂存区域 ——> 工作区域
- 将暂存区域中的数据覆盖开发区域的新改动的数据(开发区域的数据会丢)
指定覆盖文件内容:git checkout -- README.md
如果工作区域有新增的文件/文件夹,使用checkout命令会报错
当是如果是工作区域有删除的文件/文件夹,使用checkout是可以进行恢复
2. reset(重置)
fixed
数据流动:git仓库 ——> 暂存区域
git仓库会重置到上次提交的位置(commit提交两次则重置到第一次提交后的模样)
然后再将重置后的数据同步到暂存区域
重置到上次的指令:git reset HEAD~
重置到上上次的指令:git reset HEAD~2
重置到指定版本:git reset a530b2(commit标识的前六位即可)
重置指定版本的指定文件:git reset a530b2 文件
重置到未来:
- 先查看包含重置前的所有提交
git reflog
- 指定重置到的指定提交
git reset b3tr2e(相比当前是以后的快照)
soft
将head指向上一个快照:相当于撤销上次的commit提交
不会修改暂存区域的数据
重置到上次的指令:git reset --soft HEAD~
重置到上上次的指令:git reset --soft HEAD~2
重置到指定版本:git reset --soft a530b2(commit标识的前六位即可)
hard
数据流动:git仓库 ——> 暂存区域 ——> 开发区域
将head移到上一次的提交
将git上次提交的内容覆盖暂存区域和开发区域
暂存区域和开发区域的数据会丢失
重置到上次的指令:git reset --hard HEAD~
重置到上上次的指令:git reset --hard HEAD~2
重置到指定版本:git reset --hard a530b2(commit标识的前六位即可)
3. 比较差异
比较工作区域和暂存区域
git diff
比较两个历史快照
git diff A快照编号 B快照编号
比较工作区域和指定快照的差异
git diff 指定快照编号
比较工作区域和最近一次commit提交的差异
git diff HEAD
比较暂存区域和指定快照的差异
git diff --cached HEAD
git diff --cached 快照编号
删除/修改
删除工作区域指定文件git rm 文件名
仅删除暂存区域指定文件git rm --cached 文件名
同时删除工作区域和暂存区域的指定文件git rm -f 文件名
文件改名git mv 旧文件名 新文件名
4. 其他
修改最近一次提交的描述
git commit --amend
git commit --amend -m "update describe"
查询
- git status查看当前的工作状态
- git log 查看提交(commit)记录
三、分支
1. 流程
- 创建分支
git branch feature
- 查看包括当前head指向分支在内的日志
git log --decorate
git log --decorate --oneline
git log --decorate --oneline --graph --all
- 切换分支
git checkout feature
创建并切换分支git checkout -b feature
- 切换回主分支
git checkout master
- 将指定分支合并到当前分支
git merge feature
- 一般上一步都会发生冲突,查看冲突发生的位置
git status
然后打开有冲突的文件解决冲突,确保冲突解决之后,
采用git add 冲突文件和git commit 操作来成功合并此次操作
四、心得
- git记录的是每一次的改动
- git有三棵树,一颗是工作区域,一颗是暂存区域,一颗是git仓库
每棵树都可以理解为一个文件夹,相当于一个项目存了三份 -
Git管理的文件有三种状态
- 已修改(modified):表示工作区域有改动,当没同步到暂存区域
- 已暂存(staged):表示工作区域的改动已经同步到暂存区域但没提交
- 已提交(committed):表示暂存区域的改动已经提交到git仓库
- 通过add提交到工作区却没commit并再次改动文件,git status时就会显示两类信息
- 即便删除分支,分支的那些提交记录依然存在,因此删除的其实是分支的指针
- 在对代码的改动中,尽量多提交代码,这样可以避免冲突的发生以及耗费大量时间去解决
五、疑问
- git都有哪些好用的config配置
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。