那些你必须知道的Git干货

tech2022-08-12  115

什么是版本控制?

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

本地和集中式版本控制

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

分布式版本控制-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(||) 都是列出当前目录中的所有文件,只不过||(两个||)列出的内容更为详细
最新回复(0)