git教程

Git记录的是什么
SVN记录的是每一次版本变动的内容
Git则是将每个版本独立保存
Git是通过维护工作区域(目录)、暂存区域、Git仓库来进行工作的
Git的工作流程:
1、 在工作目录中添加、修改文件(在你的仓库下创建自己的文件比如README.md)
2、 将需要进行版本管理的文件放入暂存区域 (git add README.md 后面也可以加别的文件名)
3、 将暂存区域的文件提交到Git仓库(git commit -m “add a readme file”)后面加的是要提交的说明。(提交第i个版本的快照)
Git管理的文件有三种状态:
已修改(modified)
已暂存(staged)
已提交(committed)
Git init 创建的一个仓库用来更新版本迭代的
查看状态: git status
撤销上一步的操作:git reset HEAD 后面可以添加文件名,如果不加就会全部退回上一步的操作。
如果修改原来的文件的话,继续使用git status就会出现红色,我们可以进行以下两种第一种:git add 文件名 重新提交以下
第二种:git checkout – 以前的文件名,来覆盖当前提交的文件内容。
我们可以认为有三个文件夹
1、 第一个文件夹 是你的当前工作目录
2、 第二个文件夹 是你的暂存目录
3、 第三个文件夹 是你的Git仓库
查看历史提交记录:git log(查看当前分支提交的快照)
回到过去:
在这里插入图片描述
reset-用于把Git仓库的文件还原到暂存区域
checkout-用于把暂存区域的文件还原到工作目录。
Reset命令的选项
git reset --mixed HEAD~(mixed可以省略)
—移动HEAD的指向,将其指向上一个快照
—将HEAD移动后的指向的快照回滚到暂存区域
git reset --soft HEAD~
—移动HEAD的指向,将其指向上一个快照(撤销上一次的提交)
git reset --hard HEAD~
—移动HEAD的指向,将其指向上一个快照
—将HEAD移动后的指向的快照回滚到暂存区域
—将暂存区域的文件还原到工作目录
回滚指定的快照
git reset commit号
回滚个别的文件(只是回滚到暂存区域)
git reset 版本快照 文件名/路径
不仅可以往回滚,还可以往前滚
git reset 版本快照的id号(唯一的条件是你要知道这个id号)
比较暂存区域与工作目录
git diff
比较两个历史快照
我们在git仓库里面存放一个个提交的快照
git diff 快照1 id 快照2id
比较当前目录和Git仓库中的快照
git diff 快照id
在这里插入图片描述
比较暂存区域和Git仓库的快照
git diff –cached 快照id
修改最后一次提交
执行带 –amend 选项的commit 提交命令,git就会“更正最近的一次提交”
删除文件
git rm 删除的文件名
—该命令删除的只是工作目录和暂存区域的文件,也就是取消跟踪,在下次提交时不纳入版本管理。
只删除暂存区域的文件
git rm --cached 文件名
重命名文件
git mv 旧的文件名 新的文件名
包含三步:
—ren/mv 旧文件名 新文件名
—git rm 旧文件名
—git add 新文件名
Git分支
创建分支
git branch 分支名
切换分支
git checkout 分支名
切换分支之后,工作目录和暂存目录就会变成切换分支的那个快照(就会被覆盖)
合并分支
git merge 分支名
删除分支
git branch -d 分支名
匿名分支
首先使用git checkout HEAD~ 这样工作目录会读进HEAD的上一个版本,但是是一个匿名的分支
然后你在工作目录进行的修改,add再commit之后
转变分支之后,提交的那个分支就没办法访问了
Checkout 命令有两种功能
1、 从历史快照(或者暂存区域)中拷贝文件到工作目录和当前的暂存区域里去
Note:如果git checkout 快照id名 就会拷贝文件到工作目录和当前暂存区域中
如果git checkout 文件名 就会拷贝文件从暂存区域到工作目录中。
2、 切换分支
git checkout 分支名 就会把HEAD转变到这个分支,同时把这个快照覆盖给工作目录和暂存区域。

reset命令和checkout命令的区别

恢复文件方面:
Checkout和reset命令都可以恢复指定快照的指定文件,并且他们都不会改变HEAD指针的指向
它们的区别是reset命令只能将指定文件恢复到暂存区域(mixed),而checkout命令是同时覆盖工作目录和暂存区域的
恢复快照方面:
Reset命令是用来“回到过去”的,根据选项的不同,reset命令将移动HEAD指针(——soft)——>覆盖暂存区域(——mixed)——>覆盖工作区域(——hard)
Checkout命令虽说是用于切换分支,但是它事实上也是通过移动HEAD指针,覆盖暂存区域、工作区域来实现的。
但是它们的区别是reset命令不会保留之前的快照分支,而checkout会保存之前的分支,还可以找得到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值