1. Git的三个作用域
Git config --local
local只对某个仓库有效
Git config --global
global对当前用户所有的仓库有效
Git config --system
system对系统所有登录的用户有效
2. 显示config的配置,加 --list
git config --list --local
3. Git 命令
git add -u
把所有工作区中被
Git,一起提交到暂存区.
git rm demo.txt
删除
demo.txt文件
git reset --hard
工作路径和暂存区里面所有的变更都会被清理
git mv demo.txt
变更文件名
git log --onelinegit log - n9
查看最近几条的日志,也可以和上面的组合起来用
git log --all | git log --all --graph
查看所有分支的提交信息
git branch -v
查看本地的分支
gitk
图形化界面
- ls -al .git
drwxr-xr-x 15 staff 480 9 20 22:22 .
drwxr-xr-x 11 staff 352 8 9 15:07 ..
-rw-r--r-- 1 staff 0 8 9 16:23 COMMIT_EDITMSG
-rw-r--r-- 1 staff 675 8 9 16:23 FETCH_HEAD
-rw-r--r-- 1 staff 21 8 9 16:24 HEAD
-rw-r--r-- 1 staff 41 8 9 16:24 ORIG_HEAD
-rw-r--r-- 1 staff 519 8 9 16:24 config
-rw-r--r-- 1 staff 73 8 9 15:04 description
drwxr-xr-x 13 staff 416 8 9 15:04 hooks
-rw-r--r-- 1 staff 19028 9 20 22:21 index
drwxr-xr-x 3 staff 96 8 9 15:04 info
drwxr-xr-x 4 staff 128 8 9 15:04 logs
drwxr-xr-x 33 staff 1056 8 9 16:22 objects
-rw-r--r-- 1 staff 331 8 9 15:04 packed-refs
drwxr-xr-x 5 staff 160 8 9 15:04 refs
HEAD 文件记录的是当前分支信息
config 记录仓库相关的配置信息refs下面有heads和tags两个文件夹, 其中heads中下面有本地分支的文件, 其中master文件中可以有以下操作:
git cat-file -t commit_id
commit_id 是通过 cat master文件中获取到的数据, 其实这个命令就是查看对象信息,综上可知matser文件中是存储的master分支的指针地址
git cat-file -p commit_id
查看 对象信息
-
objects 目录下面记录了Git Tree信息,里面是文件 -
git branch -av
查看当前的分支,
这个命令是真的强大
git commit -am"xxx"
直接提交,不会存在暂存区
git checkout -b new-branch old-branch
创建一个新分支基于旧分支
git branch -d 分支 | git branch -D 分支
-D强制删除分支
git commit --amend
修改
Git最近一次commit的Message记录.
git rebase -i 要修改的commit的父亲commit_id
如果在未提交到团队的集成分支,这样可以做修改,随意改变某个commit的message,否则就不能轻易改动.如果是要合并很多条为一条,可以选择时间最早的一条的父commit 哈希值,用这个同样的命令.
git diff --cached
暂存区与
HEAD记录的区别。
git diff
工作区和暂存区的区别。
git reset HEAD
恢复暂存区,保持和
HEAD一致。
git reset HEAD -- filename
某个文件恢复暂存区,保持和
HEAD一致,针对的是单个文件。
git checkout -- filename
把暂存区的内容变更到工作区
git reset --hard commit_id
暂存区和工作区都恢复成指定
commit_id指定的内容
git diff 分支1 分支2 -- filename | git diff commit1 commit2 -- filename
查看两个分支中某个文件的不同
git rm filename
删除工作区和暂存区的文件
git stash
将当前的修改存放到一个堆栈结构的空间中
git stash list
查看所有堆栈空间中的列表信息
git stash applygit stash pop
恢复stash区域的文件, 而且丢弃stash记录
PS: git命令不要乱用,例如 git push -f强制性上推
4. Git对象彼此之间的关系
Commit对象: 一个commit肯定是只能对应 一颗tree, 这个树代表取出的某个commit对象, 这个commit 代表的就是一个视图,这个视图存的就是一个快照,代表的就是当前 commit 对应的本项目仓库的所有的文件夹 以及文件的快照,那个时间点所有文件的快照.tree代表了当前这个点这个项目中包含了什么文件夹和文件,这个大的 tree 里面可以嵌套 小的 tree, 她们都有各自的 哈希值, 最下层的 tree 里面包含了文件 blob 对象.blob对象 代表的就是文件,重点: git 不识别文件名,她只识别文件,这个可以避免重复储存
5. 智能协议与哑协议
| 元素 | 说明 | 说明 |
|---|---|---|
| 本地协议(1) | path/to/repo.git | 哑协议 |
| 本地协议(2) | file://path/to/repo.git | 智能协议 |
| http/https协议 | https///path/to/repo.git | 平时能接触到的基本是智能协议 |
| ssh协议 | git@gitee.com:user/to/repo.git | 工作中常用的都是智能协议 |
直观区别: 哑协议传输进度不可见; 智能协议传输可见. 传输速度: 智能协议比哑协议传输速度快.
6. 配置公私钥
ls -al ~/.ssh
查看是否有公私钥
git remote -v
查看本地备份的协议的地址
git remote add 起个名字 地址
与远端站点建立联系
git push 名字 --all
将本地所有的分支都push到远程
git pull | git fetch
pull分为两步走 fetch和merge
7. 冲突
non fast-forwards