`
seavers
  • 浏览: 173657 次
  • 来自: ...
社区版块
存档分类
最新评论

git的本质

    博客分类:
  • git
git 
阅读更多
git 的本质

配置:
git的配置操作,本质上,都是在修改config文件 (.git/config)
* git config -l

其中
remote.origin.fetch 与 remote.origin.url 即是 remote 的配置

    * git remote -v 就是显示配置, git remote -v show <name> 细节
    * git remote add|rm|set-url|rename 即是增删改操作
    * git prune 是与服务器同步的功能


其中
branch.master.remote 与  branch.master.merge 即是 branch的配置

    * git branch -v 就是显示配置
    * git branch <branchName>|-m|-d 就是增删改的操作
    * git branch --set-upstream 设置分支对应的 remote




分支名:
git 命令,使用分支时,需要一个名字, 如origin/master, refs/remotes/origin/HEAD等
其实,可以参考 .git/refs目录, 就明白了

    * heads 代表本地分支
    * remotes 代表远程分支
    * tag 代表tags分支
    * master 与 HEAD 同义

当我们需要使用分支时,语法大致是这样的  (refs/)? (heads/|remotes/|tags/)? <name>
即,refs 或者 heads 等, 都是可以省略的, git 会遍历查询
假如有冲突时, git报错 warngin: refname '...' is ambiguous , 但还会执行第一个

当然还有更精确及表示更多标识的方式, 即 commitId
而 tag 只是将 commitId 取了一个容易记忆的名字
而 分支,远程分支,可以理解为是一个 commitId 的有序列表(可变数组)




分支操作:
假如将远程仓库也看成是一个个本地分支的话, 就会明白了
[list]
* git pull 就是  git merge origin/master
* git reset <commit> 就是 还原至某分支的状态    (会根据参数,还原 文件,index, commit)
* git rebase 可以看作是另一种merge操作, 算法不同



操作index
* git add    追加 index
* git rm     删除文件,以追加index
* git mv     移动文件,并追加index
* git reset  清除uncommit的index


clone
* 这个大家都知道了,就是一系列git操作的组合


checkout
* 就是在操作HEAD的位置


git
* git的所有操作,如果理解清每个命令, 是如何操作 file, index, commit, branch 的,就都理解了









分享到:
评论

相关推荐

    git使用简介

    Git本质上是一个命令行工具,尽管现代已有许多用户界面(UI)工具简化了其使用过程。在Git中执行操作通常涉及以下几个关键步骤: 1. **初始化仓库**:使用`git init`创建一个新的Git仓库,或使用`git clone`克隆已...

    git尚硅谷笔记.pdf

    - **分支机制**:Git中的分支本质上是简单的指向提交对象的可变指针。创建新分支时,实际上是在创建一个指向当前提交的新指针。 - **合并**:合并分支时,Git会自动尝试合并两个分支之间的差异,并可能需要人工解决...

    git使用手册.doc

    - 这个过程实质上分为两步:使用 `git add` 命令将文件修改加入暂存区;使用 `git commit` 将暂存区内容提交至当前分支。 4. **GitHub上的仓库创建与操作**: - 注册GitHub账号后,可以在GitHub网站上创建远程...

    《Git 版本控制系统_从微观到宏观》

    Git本质上是一个对象数据库,它通过以下几种类型的对象来实现对数据的存储: - **Blob对象**:存储文件内容。Blob对象没有元数据,仅存储文件的实际内容,并且每个Blob对象的名称(即它的SHA1哈希值)由其内容决定...

    《ProGit》——Git使用和原理讲解

    - **分支模型**:Git的分支本质上是对提交历史的引用,切换分支时实际上是在改变当前指向的提交。 - **合并策略**:Git的合并算法(如三路合并)能够处理复杂的冲突情况,确保代码合并的顺畅。 通过阅读《ProGit...

    Git培训教程.pdf

    Git与传统的集中式版本控制系统(如CVS和SVN)有着本质的不同。在集中式版本控制系统中,所有数据都保存在单一的中央服务器上,开发人员必须联网连接到服务器才能工作,这使得在离线环境下工作变得不可能,并且增加...

    最新版深入学习Git工作流

    首先,Git与传统的版本控制系统如Subversion、Perforce有着本质的不同。传统的版本控制系统通常采用集中式的工作方式,即所有开发者的更改都需要提交到同一个中央仓库。而Git采用分布式的工作方式,每个开发者都拥有...

    git fast_forward

    在Git中,分支本质上是指向某个提交的指针。当你在一个分支上创建了新的提交之后,这个分支指针就会移动到最新的提交。Fast forward合并发生在没有新提交被创建的情况下,也就是说,当你将一个分支(比如feature分支...

    git分支原理命令图文解析

    - **分支**:本质上是指向特定提交对象的可移动的指针。 - **HEAD**:表示当前工作的分支,也即当前所在的位置。 当创建新分支时,实际上是在创建一个指向同一提交的新指针。这使得开发者可以在不影响其他分支的...

    Git 原理详解及实用指南.zip

    - checkout的本质:`git checkout &lt;commit&gt;` 可以切换到特定提交的状态,或者`git checkout -b new_branch &lt;commit&gt;` 创建新分支。 - 改动的回溯与恢复:`git stash` 存储未提交的改动,`git stash apply` 或 `git...

    git菜鸟教程.pdf

    初学者可能会对分支的概念感到困惑,通过比喻可以帮助他们理解分支实质上代表了仓库的某个特定版本。 10. Git的三大特色:教程总结了Git的三个核心功能特色——版本恢复、分布式控制(包括冲突解决)、分支方案。这...

    git,gitlab,idea插件教程

    Git是一种分布式版本控制系统,广泛应用于软件开发中,用于跟踪文件变化和协同工作。GitLab是一个提供Git仓库托管的网络应用,支持在线代码仓库管理、问题追踪、持续集成等功能。IDEA是IntelliJ IDEA的简称,是流行...

    git merge tools

    4. **快速合并**:如果确定目标分支没有发生实质性变更,可以使用 `git merge --ff-only [branch]`。这将快速向前合并,只有当目标分支可以直接快进到当前分支时才执行,避免产生不必要的合并提交。 5. **解决合并...

    Git重置与检出对比表

    综上所述,虽然`git reset`与`git checkout`在某些场景下看似相似,但它们的核心功能和适用场景有着本质的区别。熟练掌握这两个命令的用法,能够帮助开发者更高效、安全地管理项目的历史版本,避免不必要的数据损失...

    Git-SVN面试题,都是来自工作中的笔记

    总结来说,Git和SVN在版本控制方面有着本质上的区别。Git的分布式特性使得其在现代软件开发流程中具有更大的优势,尤其是在处理大型项目和远程团队协作时。掌握Git的基本命令对于任何开发者来说都是非常重要的,它...

    深入理解学习Git工作流.pdf

    因此,即使是不同的代码托管平台,其工作流的实现方式也只是细节上的差异,而不是实质上的不同。 总之,Git工作流的选择和实施对于开发团队来说至关重要。正确的流程可以帮助团队保持高效和统一的工作节奏,防止...

    Git 各指令的本质解析.doc

    Git 各指令的本质解析.doc

Global site tag (gtag.js) - Google Analytics