title: MySQL相关概念总结
date: 2019-1-20 11:27:21
categories: Git
tags: [Git,学习]


简单配置

配置user信息

1
2
3
4
5
6
7
8
git config --global user.name 'your_name'
git config --global user.email 'your_email'

git config --local #local只对某个仓库有效
git config --global #global对当前用户的所有仓库有效
git config --system #对系统所有登录用户有效,一般不用没什么意义

git config --global --list #显示配置项

local比global优先级要高

给文件重命名

1
2
3
4
5
6
#原来的使用:
mv readme readme.md
git add readme.md
git rm readme
#直接使用
git mv readme readme.md

查看gitlog

1
2
3
git log #只显示当前分支
git log --all --graph #可以看所有的分支
git log --oneline --all -n4 #一行显示所有分支最近的4个

.git目录

HEAD:整个仓库正在工作的分支
config:存放仓库本地的配置信息,记录user等信息
refs:
objects:包括文件夹和pack

commit、tree和blob之间的关系

image.png
一个commit对应一棵tree,每个文件夹对应一个tree

分离头指针

表示某个变更没有基于某个branch,在切换分支的时候,这些变更很有可能会被git当做垃圾清理,所以如果认为这些变更有用的话,一定要与某个branch绑定才能得到保留。

HEAD和branch

切换分支时,HEAD指向会发生变化。

1
2
3
git diff HEAD HEAD^  #与上一次HEAD比较
git diff HEAD HEAD^^ #与上上次进行比较
git diff HEAD HEAD^3 #与上上上次进行比较

常用场景

删除分支

1
2
git branch -d '分支名'  #清除分支的命令
git branch -D '分支名' #确信清除没有影响,采用D清除

修改commit的message

在维护自己的分支的时候,还没有提交的时候

1
2
3
git commit --amend   #修改最新的commit的message
git rebase -i 'commit id' #修改更久的commit的message
然后按照提示进行修改

整理多个commit为1个

1
git rebase -i 'commit-id'  # commit-id为最久的想合并的

比较暂存区和HEAD所含文件的差异

1
git diff --cached  #表示暂存区和HEAD的区别

比较工作区和暂存区的区别

1
2
git diff #默认比较的是工作区和暂存区的区别
git diff --文件名 #比较文件

让暂存区恢复成和HEAD一样

1
git reset HEAD #将暂存区所有的变更恢复成HEAD

工作区的文件恢复成暂存区一样

1
git checkout -- '文件名'

取消暂存区部分文件的修改

1
git reset HEAD --'文件名'  # 将暂存区某一文件恢复成HEAD

消除最近的几次提交

1
git reset --hard 'commit-id' #慎用

看不同提交的指定文件的差异

1
2
git diff 'branch1' 'branch2' -- '文件名'
git diff 'commit-id1' 'commit-id2' -- '文件名'

正确删除文件的方法

1
git rm '文件名'

开发临时加塞紧急任务处理方式

1
2
3
git stash
git stash apply
或者 git stach pop #两者区别是会丢掉

Git的备份

  • 哑协议:不显示进度条
  • 智能协议: