您当前的位置: 首页 >  git

孑渡

暂无认证

  • 3浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

git学习

孑渡 发布时间:2021-01-12 19:50:27 ,浏览量:3

此博客主要用于记录git学习过程中的知识点,以后遗忘的时候可以快速查询。主要学习资料为git的参考api以及B站网课。

系统地学习git这个想法其实是不久之前才萌生的。从大二的时候开始接触到git,只会最简单的git clone,git push,git pull。也一直只会add,commit,push三连。因为那个时候基本只是自己需要从开源网站上获取代码供自己直接使用,以及提交作业,所以学了基本的功能也没有仔细研究深入。这一问题在本学期期末的课设中被无限的放大了。 这一学期我们小组的课设是一个WEB设计的题目,采用了前后端分离开发的方法,因此我们借用了git的workflow,希望借此来起到比较好的并行开发的效果。然而由于对工作流的不熟悉,期间出现了由于前后端进度不同导致的merge难度过大,对git本地版本控制的不了解以至于切换分支时导致的工作丢失等等问题。因此决定在课设结束后的假期中尽快将git系统地学习。 下面是git的学习笔记,由于之前已经对一些命令有所了解,因此此处命令学习可能不会太过细致,只是做标注记录。 1. git的三大区域

在这里插入图片描述 要想要系统的学习git,首先需要了解的是git的三大工作区域。git可以被分为工作区(working directory),暂存区(stage或者index),版本库(history)。本地的代码修改过的代码都会在工作区当中保存,通过命令行可以将修改后的文件上传到暂存区,上传完毕后可以通过命令将修改记录保存为一个版本并保存在版本库当中。版本库当中利用HEAD指针指向当前版本。 git的版本当中保存的是其父版本上对应的修改,因此版本之间事实上可以理解为树结构并且利用指针相连。保存在版本库当中的代码可以被拉取到本地以便于进行版本控制。

2. git命令

- git init 在本地项目中git init会生成.git文件夹,里面包含git用于版本控制的配置文件。如果是远程仓库的项目初始化的话,git init会创建一个readme.md,里面包含部分默认的项目介绍,之后git会自动将该文件提交到stage并且commit形成一个版本,并且利用git remote add将远程仓库地址的URL标记为origin。

- git add git add简单来说是将修改过的文件提交到Stage当中,命令后面可以加path也可以利用通配符进行文件的提交,除此之外,还有部分常用参数: -u:用于选中修改过的或者被删除的文件,不会选中untracked的文件; -A:选中所有不同的文件,即-u加上untracked; -i: 查看所有修改了但是还没有提交的文件。

- git rm 用于在版本控制中删除文件,删除时会将删除操作提交到STAGE上。

- git commit

简单来说用于生成一个版本。可以通过添加参数来实现额外功能。 -m: 添加版本描述信息; -a: 无视Stage 提交所有在git版本控制管理下的文件,不建议使用 -amend: 用于在merge前追加提交,可以在不生成一个新的commit-id的情况下将新的修改提交到当前commit-id中,建议在当前版本追加时使用,若需要切换到历史版本追加过于复杂。

- git log 简单来说主要用于查看commit的历史版本,如果要查看所有版本(包括已经回退的版本)应使用git reflog。通过添加参数实现其他功能。 –online: 简化输出,只保留hash前7位以及commit message; –stat: 额外输出文件删改数据; -p(–show): 输出每一个commit的具体情况(show只显示一个,需要hash); –pretty: 自定义输出信息(git log --graph --pretty=format:"%h %s"); –author: 检索筛选提交者; -n(数值): 限定输出个数; –after/–before: 限定时间; –graph:可视化;

- git reset 主要用于回退版本,主要有三种参数:soft,hard,mixed。 –soft: 该参数会将HEAD指针指向目标版本,但是不会改变STAGE和工作区,包括原先删除或者新增的文件的记录都会保留在stage中。 –mixed: 相较–soft会清空STAGE,所有的文件都需要重新add。 –hard: 相较–mixed会将工作区的文件都改为对应版本的文件,原先的修改未提交的不会保留。

- git branch 用于查看分支或新建分支。-a可以查看所有分支(包括远程仓库)

- git checkout 用于检出文件,将文件修改成版本对应的默认文件,即回退单文件操作。而后面跟的参数为分支名时本质上就是将HEAD切换到对应分支之后将所有文件都检出为分支对应的原始版本。

- git merge 用于合并分支,若需要在A分支合并B分支,则需要先切换到A分支,再执行合并操作。而合并过程中,对同一个文件的相同位置进行修改会引起冲突(即git无法知道以指向的两个版本中的哪一个为准),这时git会在代码中用

关注
打赏
1663211900
查看更多评论
立即登录/注册

微信扫码登录

0.0366s