Git学习笔记

BitKeeper  ---->BitMover 2002-2005免费给Linux社区使用,2005年有人破解了bitKeeper的加密方案

SVN是集中式的

 

GitHub:代码存储完整和社区

Linux的Git:

分布式版本控制系统

Git下载:https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

Git安装:一路Next

Git配置:使用之前进行如下配置,运行->cmd

一、Git理论基础:

       Git记录的是什么?

              将每个版本独立保存

 

三棵树:工作区域(目录)     暂存区域        创库

Git创库:最终存放所有版本数据

Git的工作流程:

  1. 在工作目录下添加、修改文件
  2. 将所需进行的版本管理的文件放入暂存区域
  3. 将暂存区域的文件提交到Git创库

 

Git管理的文件有三种状态:

已修改

已暂存

已提交

 

二、实战

1、建立大本营

创建一个文件夹存放项目内容,cd 到该目录下,运行 git init

Git init---初始化,生成一个.git文件

生成的文件是Git用来跟踪管理版本迭代的,是git的核心

 

2.添加文件

git add 文件名  ---将文件添加到暂存区

git add *       -----添加所有文件

git commit –m “说明” ---将文件提交到git创库

 

4.查看状态

       git status

       MIT协议

      

4. 工作区的数据还原为暂存区的内容

git checkout -- <文件名>

 

5.仓库的数据返回暂存区

git reset HEAD <文件名>(即暂存区返回原来的状态)文件名缺省,指最后提交的文件

 

6. 当工作区的数据修改了,执行git status ,会给出两种方案:

  1. 重新添加工作区域的数据
  2. 把暂存区域的数据还原到工作去

git log 查看历史提交数据记录

7.git reset HEAD~ 仓库的HEAD指针指向前一个版本,且将前一个版本数据返回暂存区

git reset HEAD~~或HEAD~2 仓库的HEAD指针指向前两个版本

 

8.Reset命令选项

git rest --mixed HEAD~

---移动HEAD的指向,将其指向上一个快照

---将HEAD移动后指向的快照回滚到暂存区域

默认情况下,带了mixed

 

git reset --soft HEAD~

---移动HEAD的指向,将其指向上一个快照,相当与撤销上一次的提交(错误的提交)

 

git reset --hard HEAD~(存在危险,把工作目录的文件覆盖)

---移动HEAD的指向,将其指向上一个快照

---将HEAD移动后指向的快照回滚到暂存区域

---将暂存区域的文件还原到工作目录

 

9. 回滚指定快照

可以指定快照ID

Git reset ID号前几位

 

回滚个别文件

git reset 版本快照 文件名/路径

不仅可以往会滚,还可以往前滚

git reset 快照版本

 

10. 如何找回以及提交文件的快照版本号

 

11.比较暂存区文件与工作区域文: git diff

+表示旧文件 –表示新文件

j表示向下一行 k表示向上一行

f表示一页往下移  b向上移一页

d u表示移动下、上半页

G g表示移动到文件最后、前

2g表示移动到第2行 以此类推

q 表示退出

 

比较两个历史快照:

git diff 快照ID 快照ID

 

git commit –am “描述” 直接将一个工作区域的文件添加到创库

 

比较当前目录和git创库中的快照:

git diff 快照ID

git diff HEAD 比较最新一份快照

 

比较暂存区域和git创库中的快照:

git diff --cached 快照ID  省略快照ID,表示创库HEAD指向的快照

 

12. 修改最后一次提交

Git commit –amend 提交最新文件并覆盖创库里最新的文件,并可以修改提交说明

i:进入     

ESC –> :q! 退出不希望修改

ESC -> shift+zz 退出希望保存 

如果说明显式乱码,git commit –amend –m “此处填写中文说明”

13. 删除文件

从工作目录中删除文件,利用git checkout -- 文件名:可以恢复

git rm 文件名  仅删除工作区域和暂存区域的文件,也就是取消版本跟踪,在下一次提交时不纳入版本管理

git reset --soft HEAD~ 从创库删除文件快照

暂存区域和工作目录的文件不同,使用“git rm 文件名”删除时,会提示文件不同,无法删除,并添加“-f”选项可以暴力删除: git rm –f 文件名

 

只删除暂存区域的文件,保存工作目录的文件:git rm --cached 文件名

14.重命名文件

git mv 旧文件名 新文件名

 

15.Git分支

创建分支:git branch 分支名称

git log --decorate 指向提交的所有引用

git log --oneline 精简显式

--graph 图形显式分支

--all 显式所有分支

切换分支: git checkout 分支名称

16.合并分支

Git merge 分支名

17.删除分支

Git branch -d 分支名,删除分支不会删除快照

18. 匿名分支

Git checkout HEAD~

提交三个文件,并让head指针指向第二个快照

提交第四个文件

查看创库结构

切换会主分支,提示第四个文件所在分支被隐藏,可以通过命令git branch 新分支名 对于快照号来建立一个分支

  建立一个分支

19. Checkout 命令

git checkout READMD.md 文件名:将上一个快照中README.md复制到工作目录和暂存区域中

git checkout README.md如果没有指定具体的快照ID,则是将暂存区域恢复到工作目录,   约定:(--)后面跟的是文件名

checkout命令虽说可以切换分支,它事实上也是通过移动HEAD指针和覆盖暂存区域、工作目录来实现的

reset命令是用来“回到过去的”,reset命令将: 移动HEAD指定(--soft)-> 覆盖暂存区域(--mixed默认)-> 覆盖工作目录(--hard)

区别:

  1. 对于reset—hard命令来说,checkout命令更安全,因为checkout命令在切换分之前先检查下当前的工作状态,如果不是“clean“的话,Git不会允许你这样做,而reset—hard命令则是直接覆盖所有数据
  2. 如何更新HEAD指针,reset命令移动HEAD所有指针的指向,而checkout只会移动HEAD自身来指向另一个分支

 

 

  1. 创建github

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值