「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
前言
git在前端工程化中有着极大的作用,也是前端er刚接触公司项目必须学会的技术。
初步看git有很多的命令,学习会遇到不知道命令有什么作用、命令记不住等问题。本篇文章主要分享笔者理解的git的工作流程和原理,再去掌握熟悉命令,git即可修炼达成!!
对git工作流程的理解
远程资源库和本地工作区的联系
由图看来,我们一般对远程资源库的资源进行克隆操作克隆到本地工作区,然后对工作区内的资源进行一系列的修改操作,最终再将修改后的代码推送到远程资源库,实现一个远程资源库和本地工作区的更新
在多人共用的情况下,要注意可能在工作期间,有人对远程资源库进行了更新,所以在提交前要注意更新本地仓库后再将工作区的修改提交
在本地,从工作区到暂存区再到版本库(master分支)
上图描述的是本地的工作流程:
-
在工作区操作完成之后,通过
git add <file>操作将修改提交到暂存区。此时:暂存区的目录树被更新,同时工作区修改的文件内容会被写入到对象库的一个对象中,而对象的ID会被记录在暂存取的文件索引中 -
当执行
git commit -m '<备注信息>'操作时,暂存取的目录树会被写入到版本库中(即master指向的目录就是提交时暂存区的目录树)。注意:图中HEAD目前是指向master分支的一个‘游标’,所以此时命令中出现的HEAD其实就是master
-
执行
git reset HEAD命令时,暂存区的目录树会被master目录树重写 -
执行
git rm —cached <file>命令时,会直接从暂存区删除文件,而工作区不受影响 -
执行
git checkout .或者git checkout -- <file>命令时,会用暂存区全部或指定的文件替换工作区的文件。(这个操作很危险,会清除工作区中未添加到暂存区中的改动) -
当执行
git checkout HEAD .或者git checkout HEAD <file>命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。(就是把master的目录树把暂存区和工作区全部覆盖,所以这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。)
git的基本操作
创建仓库命令
- git init 初始化,使用当前目录作为Git仓库
git add *.c
git add README
git commit -m '<描述>' 将当前目录下.c结尾及README文件提交到仓库中
- git clone
git clone <Git仓库> <本地目录> 将远程git仓库克隆下来到指定目录
- 配置
git config -e 只针对当前仓库进行配置
git config -e --global 对系统上所有仓库进行配置
git config --global user.name "<Aaron_hj>"
git config --global user.email <邮箱>
(提交代码时用户信息的配置,如果不加--global,则上述配置支队当前仓库有效)
提交与修改
- git add —— 将文件添加到暂存区
git add [file1] [file2] ... 添加多个文件到暂存区
git add [dir] 添加指定目录到暂存区
git add . 添加所有文件到暂存区
- git status —— 查看上次提交后修改的文件
git status -s 可以获取剪短的信息,即修改了的文件名
- git diff —— 比较文件在暂存区和工作区的差异
git diff [file] 查看暂存区和工作区的差异
git diff --cached [file] 查看该文件在暂存区和版本库的区别
git diff [first-branch] [second-branch] 查看两次提交的差异
- git commit —— 将暂存区内容添加到本地仓库中
git commit [file1] [file2] -m '' 提交暂存区的指定文件到版本库
git commit -a -a参数设置修改文件后不需要提交git add命令,直接来提交
- git reset —— 版本回退
语法: git reset [--soft | --mixed | --hard] [HEAD]
--mixed 为默认 表示将暂存区的文件重置成上一次的提交(commit),工作区内容不变
--soft 回退到某个版本
--hard 表示撤销工作区所有未提交的修改内容,将暂存区和工作区都回到上个版本,并删除之前的所有
的信息提交
实例:
git reset HEAD^
git reset HEAD^ hello.php
git reset 052e
- git rm —— 删除文件
git rm <file> 将文件从暂存区和工作区删除指定文件
git rm -f <file> 强制从暂存区和工作区中删除修改后的指定文件
git rm --cached <file> 仅将文件从暂存区中删除,在工作区仍保存
- git mv —— 用于移动或重命名一个文件、目录或软连接
git mv [oldfile] [newfile]
git mv -f [oldfile] [newfile] 新文件名已经存在,仍要重命名它
- git log —— 查看历史提交记录
git blame <file> 以列表形式查看指定文件的历史修改记录
远程操作
- git remote —— 远程仓库操作
git remote -v 显示所有的远程仓库
git remove show [remote(远程仓库地址)] 显示某个远程仓库的别名
git remote add [shortname(本地仓库)] [url]
git push -u origin master
git remote rm name 删除远程仓库
git remote rename old_name new_name 修改仓库名
结语
时间有限,git的分支管理后续会更新,欢迎持续关注~
读到这,相信已经认真读完正文,如果觉得对你有所帮助的话,欢迎点赞关注哦!!
笔者会持续更新前端核心技术点总结和社区前沿技术分享。希望我们能一起进步。。。