安装Git
-
打开Git中文官网:https://git-scm.com/book/zh/v2
-
选择“1.5 起步 - 安装Git”,选择相应的系统版本,下载安装包并根据说明进行安装
-
验证Git安装成功:打开终端,输入“git --version”
注:视频讲解为“在Mac上安装”
03.使用Git之前需要做的最小配置
-
配置user信息(必须,不配置的话,最后Git做变更提交时会出现提示信息,提示需要做相关配置)
git config [–local | --global | --system] user.name ‘your_name’
git config [–local | --global | --system] user.email ‘[email protected]’作用域区别:
local:只对用户当前工作仓库有效(缺省值)
global:对当前用户所有仓库有效(常用)
system:对系统所有登录的用户有效(不常用)注:优先级为local > global > system
-
显示config的配置
git config --list [–local | --global | --system] -
清除unset
git config --unset [–local | --global | --system] user.name
04. 创建第一个仓库并配置local用户信息
两种场景
- 把已有的项目代码纳入Git管理
cd 项目代码所在的文件夹
git init - 新建的项目直接用Git管理(重点)
cd 某个文件夹
git init your_project #会在当前路径下创建和项目名称同名的文件夹,里面有个裸仓库.git
cd your_project
创建local user #此时global的配置信息无效,因为local用户的优先级较高
vim readme #新建readme文件
git add readme #文件从“工作目录”存到“暂存区”;此步骤后文件将被Git系统持续追踪
git status #查看工作区的当前状态
git commit -m 'Add readme' #提交变更,-m参数为变更说明
git log #显示提交记录(包括变更说明信息),此时会显示提交修改的用户名和邮箱地址均为local user
- git add -u:此命令针对已经被Git跟踪的文件,可以一起提交到暂存区,无需给出具体文件名
git add . 使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件
git add -A:上面两种集合
06. 给文件重命名的简便方法
- 常规方法
-
mv readme readme.md //git status 输出:删除了“readme”文件,并且存在未追踪(untracked)文件readme.md
-
git add readme.md + git rm readme //git status 输出:暂存区需要提交的改变为“将readme重命名为readme.md” (智能识别出重命名的目的)
-
注:git reset --hard //不想保留刚刚的操作,清楚暂存区和工作区中的所有变更(危险操作,需谨慎),git status 输出:nothing to commit, working tree clean;此时git log的历史记录与操作前一致
- 便捷方式(一步到位)
-
git mv readme readme.md //git status 输出:暂存区需要提交的改变为“将readme重命名为readme.md”
-
git commit -m ‘Move readme to reame.md’ //git log查看新增加的操作记录
07. 通过git log查看版本演变历史
(1)git log --oneline //查看单行的简洁历史
(2)git log -n4 //查看最近的4条历史(可与–oneline组合使用:git log -n4 --oneline),4可变
(3)git branch -v //查看本地有多少分支
(4)git checkout -b temp //创建新分支temp,并切换到分支temp
(5)git commit -am ‘…’ //直接将工作区内容提交,跳过"git add"
(6)git log //默认只显示当前分支的历史(如:head->temp)
(7)git log --all //显示所有分支的历史
(8)git log --all --graph //图示化显示分支历史
08. gitk: 通过图形界面工具来查看版本历史
(1)命令行输入gitk
(2)gitk 文件的路径 //查看单个文件的修改历史的具体内容
(3)某次变更有:作者(author)、提交者(commiter)两类属性,可不同
(4)通过“view”菜单定制显示内容
09. commit、tree和blob三个对象之间的关系
commit —> tree —> blob
git cat-file -p (hash) 命令显示版本库对象的内容、类型及大小信息
分离头指针
git checkout <commit id>
执行完命令会有下面的提示,提示你在分离头指针状态,在这个状态下修改提交的代码不会提交到正常的分支
分离头指针状态查看和返回
git status可以查看是否在头指针分离状态
如果想回到分支正常状态,直接执行git checkout master (master为要回到的分支)
分离头指针下修改
如果在分离头指针状态下对文件做了修改,并执行了git add .和git commit进行了提交
952770d为在分离头指针下提交的commit id,这个commit id回到master head是看不到的,回到master 重新执行git checkout 952770d可找回自己的代码,执行git log时也可以看到log
在分离头指针下当执行git checkout到其他分支时,会收到下面的警告,提示用户要新创建一个分支来保留做的修改
可以执行git branch <新分支名> 952770d创建一个新的分支,这个分支是基于头指针分离下修改提交的952770d创建的
删除不需要的分支
git branch -d 分支名
如果删除不掉 用 -D
修改最新commit的Message
git commit --amend
修改老旧 commit 的 Message
git rebase -i 要修改commit_id的上一级id(适用在本地上可以还不push情况下可以用)
修改为
保存退出
比较暂存区和 HEAD 的差异
git diff --cached
比较工作区和暂存区差异
git diff
让暂存区恢复成和HEAD的一样
git reset HEAD
让工作区恢复和暂存区一样
git checkout – 文件
取消暂存区部分文件的更改
git reset HEAD – 文件
消除最近几次的提交
git reset --hard commit_id(需要回退到的id) (公共集成分支不要执行这样的操作)
看看不同提交指定文件的差异
git diff temp master – index.html
git diff commit_id1 commit_id2 --文件名
临时开发紧急任务
git stash (入栈)
弹出
git stash pop (堆栈不保存)
git stash apply (堆栈保存)
指定不需要git管理的文件
编辑 .gitignore 文件