那些你必须知道的Git干货

什么是版本控制?

  • 便于管理多人协同开发项目的技术

本地和集中式版本控制

  • 本地版本控制
    像我们自己本地电脑上做的备份或快照等,记录每次更新,适合个人使用
  • 集中版本控制
    集中就是把数据保存到服务器上,便于多人协同开发,存在风险,需要备份

分布式版本控制-Git

  • 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过拷贝一个完整的GIt仓库,可以查看所有版本历史,可以离线在本地提交,在连网时push即可,不会因为服务器就损坏或者网络问题,造成不能工作的情况,同时只要一个用户的设备没有问题就可以恢复所以的数据

工作区

Git本地有三个工作区,再加上远程的git仓库共有四个工作区:

  • 1.工作目录(working Diectory)
    工作区,就是你平时存放项目代码的地方

  • 2.暂存区(style/Index)
    暂存区,用于临时存放你的改动

  • 3.资源库(Repository)
    仓库区,就是安全存放数据的位置

  • git仓库(Remote Directory)
    远程仓库,托管代码的服务器
    在这里插入图片描述
    工作流程
    1.在工作目录中添加或修改文件
    2.将需要进行版本管理的文件放入暂存区
    3.将暂存区的文件提交到仓库

分支

  • 分支默认时master主分支,可以创建新的分支用于不同的用途或不同部门的人并行开发,比如开发,测试,发布,紧急修复等等,从主线上分离出来进行另外的操作,而又不影响主线就像线程一样,或者看作互不影响的平行宇宙,当需要的时候还可以合并分支等操作
  • 常用指令:
//列出所有本地分支
git branch
//列出所有远程分支
git branch -r
//新建一个分支,但依然停留在当前分支
git branch [branch-name]
//合并指定分支到当前分支
$ git merge [branch-name]

切换分支
$ git checkout [branch-name]

删除分支
$ git d [branch-name]

删除远程分支

$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

HEAD指针与reset和checkout

  • HEAD指针
    GIT中存在一个HEAD指针,在每次提交时HEAD指针会向前进一位,同时HEAD指针只存在暂存区和仓库区。就是说如果我们使用git add命令,那么此时HEAD指针会进入到暂存区,继续用git commit,此时会进入到仓库区。
  • git rest
    git reset其实就是把HEAD指针回退一位,即如果你在仓库区,那么你回退一位就是暂存区,如果你在暂存区,那么指针会回退到上一次的仓库区,reset命令提供了三种使用方法,分别是 sort 、mixed、hard:
git reset --soft //移动指针
git reset --mixed//移动指针+清空暂存区
git reset --hard //移动指针+清空暂存区+清空工作区
  • git checkout
    简单说,checkout就是把当前代码更新成HEAD指针指向的提交,除了前面提到的git checkout [branch-name]切换分支,其原理就是将HEAD指针指向另一个分支,同时将其覆盖。还可以git checkout[file-name],把内容更新成上一版提交,但前提是HEAD指针指向的提交与当前你所在的区域不同。

  • 小结:
    reset:头指针回退到上一个、还原本地文件(撤销)
    checkout:更新当前代码为头指针指向的提交、还原本地文件(替换)

  • fetch、clone和pull

  • 适合场景
    fetch:有本地仓库主分支,下载其他分支
    clone:没有本地仓库
    pull:本地仓库和远程仓库不同步

  • 异同
    fetch:从远程获取最新到本地,不会自己merg
    clone:把仓库克隆到本地,无需有本地仓库(即git init)
    pull:从远程获取最新并merge到本地
    常用的linux命令

cd                                    改变目录
cd..                                  回退上一个目录,直接cd进入默认目录
pwd:                                  显示当前所在的目录路径
#                                     表示注释
exit                                  退出
help                                  帮助
history                               查看命令历史
clear                                 清屏
reset                                 重新初始化终端/清屏
mv                                    移动文件
rm -r                                 删除一个文件夹,rm-r src删除src目录
mkdir                                 新建一个目录,就是新建一个文件夹
rm                                    删除一个文件,rm index.js就会把index.js文件删除。
touch                                 新建一个文件 如touch index.js 就会把index.js文件删除
is(||)                                 都是列出当前目录中的所有文件,只不过||(两个||)列出的内容更为详细
                        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值