简单Git

版权声明:来一来,看一看,有钱的捧个人场,没钱的你不得捧个人场 https://blog.csdn.net/wait_for_eva/article/details/80231044

结构说明

Git会对每一步的文件修改进行记录,不论是从简单的修改到最终的确定,以前的基础到继续的开发,都会进行对应的记录。

对于基础的二次开发,必要条件是基于某次的定稿,就是最终的版本,后面的版本切换和分支会进行讲述。

而对于一次问题的修改、完善到定稿过程,分别对应进行修改记录。

分作工作区,缓存区和版本区,对应为草稿、副本、定稿。

初稿可能不止修改一次,定稿也可能有多个版本。对于每份定稿,git都会进行存储。

  • 工作区

工作区中,相当于我们的草稿本,可以随意的涂鸦,但是没有记录功能。

  • 缓存区

副本区域,添加到该区域,会自动创建副本,当草稿丢失时可以从副本中进行恢复。

  • 版本区

版本相当于一次完整的修改操作,此时会将全部的操作进行保存留档。

如果说缓存区是随时可以进行删改的副本记录,版本区就是不可删改的档案管理。

  • 入口

我们每次的编辑,都是针对某一项功能进行的。

如果不是重新开发,一般都是基于某个版本的。HEAD指针可以让我们指定一个基础版本进行开发,在整个版本链中,清楚自己所处的位置很重要。认清楚自己的分支,所处的版本是有必要的。

配置及基本命令

  • 初始化

git init:把当前文件夹添加git,让git监听当前文件夹

  • 用户信息

git config --global user.name "username":username处指定自己的用户名

git config --global user.email "email":引号中指定自己的邮箱 

  • 查看配置

git config --list:列出配置的全部信息,可以根据用户配置办法指定名称进行配置

  • 查看状态

git status:git会把工作区和缓存区的文件进行比较,然后进行提示,如果已经提交且未修改,状态clean

  • 查看日志

git log:显示版本信息,可带参数有:

  • --oneline:分行简短显示
  • --decorate:显示分支信息
  • --graph:图形显示
  • --all:全部信息
具体情景后面有例子。

向上记录

  • 工作区->缓存区

git add file/dir:把指定文件或者文件夹添加到副本区,通配符*表示全部副本备案

  • 缓存区->版本区

git commit -m "message":把缓存区写入版本区永久存档,不可更改

-m表示添加版本描述,提交到版本区就不可以再随意删改,每次提交都视作一个新的版本,会进行永久存档

提交到版本区时,缓存区和工作区文件需一致,若有差异,git会进行提示。

向下恢复

  • 版本区->缓存区

1. 基础版本回写

git reseat HEAD:通过HEAD入口指向版本,会同时把版本库信息写入缓存库

2. 指定版本回写

git reseat HEAD~:当HEAD后面跟~时,表示进入上一个版本,并把版本库信息写入缓存区

n个~表示向前回溯n个版本,可以简写为~n

3. 指定版本

git reseat ID:通过git  log可以查看版本ID,通过ID可以指定写回的版本信息

ID为SHA1,不必全部输入,采用至少前五位即可进行指定

4. 参数指定

--mixed:默认模式,当不写时默认采用,此时会将版本库信息默认写入缓存区

--soft:采用此模式,会切换版本库,但是不会将版本信息写入缓存区

--hard:此模式下,不仅切换版本库,同时将版本库信息写入缓存区和工作区,原先文件会覆盖

  • 缓存区->工作区

git checkout --  file:把缓存区中的指定文件,回写到工作区

--两侧都带有空格,区别 后续切换分支操作,file可以是指定全路径文件,可以进行单个文件的覆盖

文件比较

  • 工作区->缓存区

git diff:比较工作区中文件和缓存区中文件差异

  • 工作区->版本区

git diff ID:比较工作区中文件和版本库文件的差异,通过ID指定版本,不一定是当前基础版本

  • 缓存区->版本区

git diff --cached  ID:比较缓存区和版本库中文件,版本通过ID进行指定

  • 版本区->版本区

git diff ID1 ID2:比较指定两个版本的差异

重新修改

  • 修改提交信息

git commit --amend:修改提交提示信息,此操作不会产生新的提交操作,不会重复创建版本仓库,默认打开原文件信息

git commit --amend -m "message" :直接覆盖原提示信息,不会显示原来的提示信息

  • 文件重新命名

git mv old_filename  new_filename:修改文件名需利用git,否则新文件git不识别,误认为旧文件删除和新文件添加

  • 文件删除

git rm filename:删除文件,包括工作区和缓存区

git rm  --cached filename:仅删除缓存区中文件,工作区中文件保留

git rm -f filename:强制删除文件

分支操作

  • 添加分支

git branch branch_name:为当前版本创建分支,默认分支为master,branch_name为新分支名称

  • 查看分支

git log --decorate:详细列出日志,带分支名称

git log --graph:图形显示分支及流程

git log --all:全部信息

  • 切换分支

git checkout branck_name:切换到指定名称的分支上面

  • 删除分支

git branch -d branch_name:删除指定名称的分支

-d为delete简写,全拼一般通过--指定

git branch --delete branch_name

  • 合并分支

git merge branch_name:将指定名称的分支合并到当前版本中

  • 匿名分支

git branch HEAD~:当操作不当时,会创建一个无名分支,即匿名分支

分支可进行改动和提交操作,但不会影响到其他分支,当切换其他分支时,该分支无法再次被检索到


git branck branch_name ID:退出时,是最后的机会,如果需要保留该匿名分支,git会最后提醒为该分支创建名称

通过指定名称和ID,为匿名分支创建名称

如果ID指定的是当前已经存在的分支,则该名称也会指向该分支


回顾

1. 工作流程为版本库的串联关系,主线master只有一条,持续在此基础上进行迭代。

2. 分支算是小master,全部的改动最终回归到主线上

3. 每个版本的开发过程中总是要修改,副本保存和最终完成,因此开发中常用三个库

猜你喜欢

转载自blog.csdn.net/wait_for_eva/article/details/80231044