git最小化配置:git
配置user.name 和 user.emailvim
git config --global user.name 'your_name'缓存
git config --global user.email 'your_email' // email须要是有效的Emailapp
config的做用域工具
缺省等同于localfetch
git config --local 只对某个仓库有效3d
git config --global 对当前用户全部仓库有效指针
git config --system 对系统全部登录用户有效日志
显示config配置,加--list对象
git config --list --local
git config --list --global
git config --list --system
建Git仓库
2种场景:
把已有的项目代码归入Git管理
#cd 项目代码所在的文件夹
#git init
新建项目直接用git 管理
#cd 某个文件夹
#git init your_project 会在当前路径下建立和项目同名的文件夹
#cd your_project
往仓库里添加文件:
版本历史
暂存区
工做目录
查看git工做状态
#git status
将文件加入到暂存区:
#git add 文件或文件夹
将暂存区文件正式提交
#git commit -m "内容"
查看版本历史的日志
#git log
将已经管理可是刚修改的文件添加到暂存区
#git add -u
文件重命名:
方案一:
#mv readme readme.md
#git add readme.md
#git rm readme 原文件删除
#git commit -m '内容'
注:操做还原,清理暂存区全部变动
#git reset --hard
方案二:
#git mv readme readme.md
#git commit -m '内容'
查看git版本历史:
#git log --online 简洁方式查看历史
#git log --n4 查看最近4次历史
#git log --all 查看全部分支的版本历史
#git log --all --graph 父子关系展现版本历史
注:git branch -v 查看本地分支
查看版本历史图形界面工具:
gitk
git目录:
查看git 配置文件
#cat .git/config
.git/refs/ 下存在heads和tags文件,heads下是分支文件的指针文件;tags下文件是哈希值文件;.git/objects/下文件是上传的文件
#cd e8
#git cat-file -t e8xxxx // 查看文案类型
#git cat-file -p e8xxx //查看文件内容
#git cat-file -p b72xxx
commit与tree与blob关系:(git对象的彼此关系)
查看git分支/切换分支:
git branch -av //查看分支
git checkout master //切换分支
git checkout -b 子分支 父分支 //建立基于父分支的子分支
提交分支到远程:
#git checkout --orphan cluster
#git checkout cluster
#git rm -rf .
#vim README.md
#git add README.md
#git commit -m "ADD readme.md"
#git push -u origin cluster
分离头指针:
git checkout commit编号 //进入分离头指针
文件编辑后,分离头要建立/加入某一分支
git branch '分支名' xxxxxx //xxxx是分离头指针编号
head和branch关系:
head不只能够指向分支,还能够指向某个文件(分离头指针)
删除不须要的分支:
git branch -D 分支名
修改commit信息:
git commit --amend
修改老旧commit信息:
git rebase -i commit的父ID ==》进入说明文件 :wq! => 进入交互界面修改 ,保存 wq!
连续的多个commit合并成一个:
commit的父ID查看:
git log --graph 选定commitID的下一个即为父commit
#git rebase -i commit的父ID
==》修改文件
假设要合并4个文件,则保留一个pick,3个修改为s
再保存(wq!),进入交互界面
修改文件,保存 wq!
间隔的多个commit合并成一个:
#git rebase -i 最下面的commitID
=》 在文件的最上面增长pick 最下面的commitID ,要合并的commit放在一块儿,保留一个pick,其他修改为s
其他步骤同上
暂存区和head文件(最近commit的文件)差别:
#git diff --cached
暂存区和工做区差别:
#git diff
#git diff -- readme.md //只比较readme.md文件差异
暂存区全部文件不保留(暂存区与工做区一致):
#git reset HEAD
工做区文件恢复与暂存区一致:
#git checkout -- <file> //file 是文件名
取消暂存区部分文件的更改:
#git reset HEAD -- <file ...>
消除最近几只commit:
#git reset --hard commitID // 恢复到指定commitID位置
查看提交文件的差别://比较2个分支相同文件的差别
#git diff 分支1 分支2 -- 文件名
#git diff commitID1 commitID2 -- 文件名
删除文件:
#git rm file-name
ex:删除远程仓库的目录/文件
加塞任务
#git stash //暂存区放置缓存
#git stash list
#git stash apply //缓存内容放置工做区,缓存信息不丢失
#git stash pop // 缓存内容放置工做区,缓存信息丢失
git 仓库备份至本地
本地仓库同步至远程:
#git remote add 别名 远程项目地址
#git remote -v //查看远端别名链接地址
#git push 别名 --all //push 全部的分支
合并分支:
# git fetch origin 最新版本的线上分支:新建一个本地的分支//从远程的origin仓库的最新版本的线上分支下载到本地,并新建一个本地的新分支
# git diff 新建的本地的分支
# git merge 新建的本地的分支//将新建一个本地的新分支和本地分支合并
# git branch -D 新建的本地的分支
# 解决冲突
# git add .
# git commit -m '合并+解决冲突'
# git pull origin 最新版本的线上分支
# git push origin 我本地的分支:最新版本的线上分支