Git基本理论以及常用命令

1 篇文章 0 订阅

Git基本理论

工作区

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

  1. 工作目录(Working Directory)
    工作区,就是你平时存放项目代码的地方
  2. 暂存区(Stage/Index)
    暂存区,用于临时存放你的改动
  3. 资源库(Repository)
    仓库区,就是安全存放数据的位置
  4. git仓库(Remote Directory)
    远程仓库,托管代码的服务器

各个区域直间的关系
工作流程

在工作目录中添加或修改文件
将需要进行版本管理的文件放入暂存区–add操作
将暂存区的文件提交到仓库–commit
将修改的文件推送到远程仓库–push

分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。

有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch-name]
# 合并指定分支到当前分支
$ git merge [branch-name]
#切换分支
$ git checkout [branch-name]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

note:
分支切换会改变你工作目录中的文件
在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

HEAD指针与reset和checkout

  • HEAD指针
    Git中存在一个HEAD指针,在每次提交时HEAD指针会向前进一位,同时HEAD指针只存在于暂存区和仓库区。也就是说如果我们使用git add命令,那么此时HEAD指针会进入到暂存区,继续用git commit,此时会进入到仓库区。
  • git reset
    git reset其实就是把HEAD指针回退一位。即如果你在仓库区,那么你回退一位就是暂存区,如果你在暂存区,那么指针会回退到上一次的仓库区。reset命令提供了三种使用方法。分别是–soft --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指针指向的提交与当前你所在的区域不同。
resetcheckout
原理头指针回退到上一个更新当前代码为头指针指向的提交
异同还原本地文件(撤销)还原本地文件(替换)

fetch、clone和pull

fetchclonepull
适合场景有本地仓库主分支,下载其他分支没有本地仓库本地仓库和远程仓库不同步
异同从远程获取最新到本地,不会自动merg把仓库克隆到本地 ,无需有本地仓库(即git init)从远程获取最新并merge到本地

note
git pull = git fetch + git merge,这样fetch就比较有优势,可以下载后根据情况再选择是否合并,而clone就是从无到有的过程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值