Git安装与用户配置
全局配置
git config --global user.name "your_name"
git config --global user.email "example@example.com"
查看配置信息
git config -ll
创建版本库
本地第一次创建,创建完毕或者任一过程都可以使用git status查看状态信息
git init
git add .
git commit -m "message"
git push
从代码托管服务端直接clone下来的,则不需要初始化
git add .
git commit -m "message"
git push
版本管理
- 版本号说明
git的版本commit id是一个SHA1(Secure Hash Algorithm)计算出来的一个非常大的数字,用十六进制表示。
空文的散列(40位)为:
SHA-1("")
= 3eed253db7897807e68e8f64b9bd4d6980b6a0b0
每提交一个版本,Git会根据这些版本将其自动串成一条时间线,可以在ide自带的Git工具或者其他Gitt自动化工具中,查看Git提交历史
- 版本查看
git log # 提交历史,穿梭历史
git log --pretty=oneline # 修改参数,指定输出
git reflog # 命令历史,回到未来
- 查看示例
$ git reflog
f9e755b (HEAD -> main, origin/main, origin/HEAD, test) HEAD@{0}: merge test: Fas
t-forward
03bc6e0 HEAD@{1}: checkout: moving from test to main
Git当前版本为HEAD@{0}或者HEAD -> main, 用HEAD表示当前版本,上一个版本表示为HEAD^,上上版本为HEAD^^,当然不能一直这么计数,有点呆。
一般常用的几种版本回退如下:利用HEAD指针或者版本号03bc6e0:
- 删除当前版本信息,回退到上一版本,
git reset --hard HEAD^orgit reset --hard 03bc6e0- 如果想回到当前版本,可以使用
git reflog查看命令历史,找到版本号,回到未来
- 如果想回到当前版本,可以使用
- 保留当前版本信息,切换到上一版本,
git checkout HEAD^orgit checkout 03bc6e0
工作区和暂存区
- 工作区(Working Directory):电脑里的本地库
- 版本库(Repositort):工作区的隐藏目录
.git这个虽然在工作区中,但是不属于工作区文件,实际上是Git的版本库。可以进入目录cd .git查看目录信息,但是千万不要修改里面的文件!!!- config:Git配置信息,使用
cat config可以查看里面的配置信息 - index:暂存区
- logs/:提交历史记录
- config:Git配置信息,使用
管理修改
提交后,可以通过git diff HEAD -- file来查看工作区和版本库里面最新版本的差异:
撤销修改
- 撤销工作区的修改,此时工作区才是干净的,直接撤销
git checkout -- file撤销修改恢复文件,其中--表示撤销,没有--则表示切换分支。 - 撤销暂存区的修改,此时暂存区是干净的,但是工作区的修改依然存在,回到上步操作,继续撤销
git reset HEAD file
删除文件
git rm用于删除一个文件。
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
分支管理
- 创建分支
git branch 分支名 - 切换分支
git checkout -b 分支名 - 删除分支
git branch -d 分支名- 强制删除没有合并过的分支
git branch -D 分支名
- 强制删除没有合并过的分支
- 合并分支
git merge origin/分支- 无冲突,正常合并后,执行
git push - 分支冲突,解决冲突后
git commit -m "message"- 解决冲突:远程分支代码强制覆盖本地代码
其中,git fetch --分支 git reset --hard origin/master git pullgit pull和git fetch的区别:-
git fetch:相当于是从远程指定分支代码获取最新到本地分支中,不会自动merge -
git pull:相当于是从远程获取最新版本并 merge 到本地
-
- 解决冲突:远程分支代码强制覆盖本地代码
- 无冲突,正常合并后,执行
远程仓库连接
- 获取本机的
ssh_key与GitHub连接
ssh-keygen -t -rsa -C "example@example.com"
在用户目录下(user)下可以找到.ssh目录,id_rsa 和id_rsa.pub两个文件,将id_rsa.pub内容复制粘贴至github中,即可完成远程连接。
查看文件提交信息差别
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat