git 笔记
- 最小配置:设置user.name and user.email
git config < --global > user.name 'your_name'
--global
//对当前用户所有的仓库都有效
--local
//只对某一个仓库有效
--system
//对系统所有的登录用户有效,基本不用
git config --list --< --global >
//查看global的配置,local,sytem同理
创建一个git仓库
两个场景
-
已经有了项目代码了
cd 项目所在文件夹
git init
-
新建项目直接用git管理
cd 项目所在文件夹
git init your_project
会在当前路径创建和项目名称相同的文件夹cd your_project
git工作区和暂存区
git status //查看文件状态(是否修改,add或者commit)
git add < dirName... > <fileName...>//可以同时添加多个文件或文件夹
git add将文件加入了暂存区
git add -u //可以将git已经跟踪了的文件(就是已经add过了的)一起add
git commit -m 'commit 原因'
文件重命名
- 一般方法:
mv oldfFileName newName//这将使oldFileName删除再新建一个newName文件,文件内容不变
git add newName
git rm oldFileName
- 简单方法:
git mv oldname newname
git commit -m '原因'
- git log 使用
git log //查看log 有commit id,Author(作者),email,Date和提交注释信息。
-n3//查看最近3个
--oneline//简洁显示
--all //查看所有分支
--graph //图行化查看分支哪里来的
--不加参数就支持看当前分支的log
git reset 版本回退和前进
git reset --hard
版本id //回退到指定版本,可以找回永久删除的文件
git reset --hard HEAD^^
//一个^后退一个版本
git reset --hard HEAD~n
//n为几就是后退几个
--soft id
//仅仅修改本地库的HEAD指针
--mixed id/
/修改本地库和暂存区的HEAD指针
--hard id
//本地库 暂存区 工作区(写代码)HEAD指针都改变
- git diff
git diff filename
//将工作区文件和本地区的文件比较
git diff id filename
//将某个版本的本地文件和当前工作区文件对比
- git分支
git branch -v
//查看分支
git branch 分支名
//创建分支
git checkout 分支名称
//切换分支
git merge B分支名称
//合并分支,注意要先到A分支然后把B分支合并到A
- 分支冲突:
就是两个分支修改了同一个地方,git不知道要采用谁的修改。
- 解决:
首先把文件里面的特殊符号删除,保存退出;再git add filename;最后git commit -m'原因' 即可
- commit tree blob区别
一个commit对应一个tree,一个tree下面有许多blob(指某一个具体文件),在git里面两个一模一样的文件对应同一个blob,这样就能减少空间的浪费。
git cat-file -t id
//看类型,例如commit,tree,blob
git cat-file -p id
//看内容
- git&&github
git remote add
别名 GitHub地址//相当于起别名
git remote -v
//查看别名对应的地址
git push
别名 分支//推送文件到GitHub仓库
git clone
地址//把远程库clone到本地,而且也把本地库的别名和初始化也完成了。
git pull
远程库别名 远程库分支//拉取远程库的指定分支
pull = fetch + merge
git fetch 别名 分支
git merge 别名/分支
以上两个操作相当于一个git pull