`

git总结

 
阅读更多

 参考 :  pro git

Git版本控制软件结合GitHub从入门到精通常用命令学习手册

 

git基础

  直接记录快照 , 而非差异对比

    看下面两个图,第一个是git的,在每个版本的下面都有相应文件的快照,

    如果这个文件没有被修改,那么就会有一个指向原文件的里链接,就是图中的

    虚线框。

    第二个这是像svn那些版本控制工具,每个版本下面记录的是文件的变化!记录的

   是该版本下该文件更新了那些内容!

    

 

    

 

   文件的三种状态

     在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)

       已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没

      有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

     

 

   git中文件状态的变化周期

       tracked  和 untraked

       已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录

          所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂

         存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

    

 

Git中的一些术语的理解:

远程仓库

     因为多人协作必须要有一个公共的地方可以取或存 ,就像github 就是一个远程仓库

 

本地仓库

     它就是远程仓库的在我们自己电脑上的一个镜像!.git文件夹里面就储存着该仓库的metedata

 

clone

     可以通过git clone 拷贝远程仓库的一个镜像到本地

 

push

     将本地仓库的修改推送到远程仓库 这里注意如果再之前有人push 导致远程仓库中有你不存在的文件..

     得先fetch到本地 , 然后与本地仓库的merge

 

pull

     从远程仓库拉资源下来

 

commit

     这个提交是你的本地的修改提交到本地仓库

    这样的好处 , 就是即使现在没有网,你也可以工作!

 

origin

    你所克隆的原始仓库的默认名字

 

master

     分支的默认名字

 

Head

     指向的是当前工作的分支

 

理解分支

   commit对象

    下图就可以成是一个commit对象的结构

    我们每次提交,都可以看成新建了一个commit对象

    右边三个则是文件的快照,中间的tree则是存储快照文件

    的索引,左边的commit对象则存储了其他元数据及指向tree

    的指针

  

    作些修改后再次提交,那么这次的提交对象会包含一个指向上次提交对象的指针

  (即下图中的 parent 对象)。两次提交后,不就变成这样子了:

    这样想想,以后如果想回到以前的版本 , so easy!

 

  这想不想myeclipse中的那个图:

 

  那么这里的master 和 head又是什么了?

   Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master

   作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的

   master 分支,它在每次提交的时候都会自动向前移动。 

 

 

$ git branch testing // 创建新的分支

   运行上面的命令 , 则会创建一个指向f30ab的分支testing

   那么又是怎么知道你在那个分支上工作的了?

   这就是HEAD的作用了!

   你在那个上工作,head就会指向你,比如上面,你新建了一个testing的分支,但是

   head依然指向的是master,所以依然工作的是master

   可以通过下面的命令切换到testing

$ git checkout testing

  

  现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。

  

 

  远程分支

    是对远程仓库中的分支的索引。它们是一些无法移动的本地分支;只有在 Git 进行网络交互时才会更新。

     意思就是说,当我们git  clone 一个repo的时候,对于当前库的版本在本地就会有一个指针(origin/master)指向它!

     然后,我们可以对本地库修改,提交,但是这个指针是不会变的...就像下图:

            

  

     那么它的作用是什么?

          因为在你push之前,可能有其他人push了,那么远程库中的版本(origin/master)就往前移了,但是我们本地是不知道的

          它依然在原来的地方,所以,当我们要push的时候,有了这个远程分支的索引,直到在哪里分流...就像下面:

        

 

git命令:

  创建文件 :touch  filename

  但是上面创建的这个文件时untracked。

  通过git add filename 就会track这个文件,也就是它在版本控制的范围内 

  查看文件状态:

  git status  // 这也是一个神技 不同的文件状态在电脑的文件系统中会有不同的图标 

  git push [reponame] [branch_name] :如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就

   会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。

 

  git pull [reponame] ://抓取远程仓库中的数据并合并

  如果设置了某个分支用于跟踪某个远端仓库的分支,可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支

   默认 认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)

 

  git fetch [remote name] // 从远程仓库抓取本地仓库中没有的数据

  git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)

  但是它并没有自动合并

 

  git merge [branch]:合并分支

 

  git mergetool :合并工具 

 

  git remote add [shortname] [url]:添加远程仓库

$ git remote add pb git://github.com/paulboone/ticgit.git

 

  分支有关的命令

    git branch [branch name ] //  建立分支

    git check out [brach name] // 变为当前工作分支

    git branch -d [branch name] // 删除分支

    git branch --no-merge // 没有合并的分支

    git branch --merge // 合并的分支

 

 总结我对git的理解:

   git如果不push到远程仓库,那么实现的就是一个单人作业的版本控制系统!

   他仍然可以控制你的版本,就像上面介绍commit对象的那个图一样,每次提交都会

   有生成一个commit对象,它有个父指针指向前一个commit对象(上一次提交) ,并且还有个指针

   指向该版本的快照... 这样我们就可以回溯到之前的任一个版本了...

   而git通过push到远程,它实现的就是一种协同作业,也就是一种开源,向别人展示你的代码

   而github就是提供了这么平台,一个代码托管的平台,一个开源的平台!

   而对于git 的分支, 就是一个指向某个commit对象的一个指针。可以针对之前的版本建立一个branch

   也可以在当前分一条支出来,就像一个后备的选择一样,看将来某个时刻要不要进行合并!

   当然,合并的过程,可能会发生冲突... 需要我们手动的完成!

 

 

分享到:
评论

相关推荐

    git总结文档和git的ximd图

    标题中的“git总结文档”可能包含了Git的基本概念、常用命令和操作流程,比如如何初始化仓库、如何添加和提交文件、如何查看提交历史、分支管理、合并与解决冲突等内容。这些是学习Git的基础,对于初学者来说非常...

    小徐《Git总结》

    小徐在《Git总结》中提到了Git在Linux系统下的使用,以及对Git常用命令的总结。接下来将根据文件中提到的内容,详细解释这些知识点。 ### Git基础概念 Git中的三个主要区域是: - **Workspace(工作区)**:开发...

    git总结大全

    总结的git使用大全,和中兴通信的git使用规范。

    java之Git总结笔记

    总结来说,Git 作为一款强大的版本控制系统,极大地促进了团队协作和代码管理。掌握 Git 的使用,不仅可以帮助开发者更好地追踪和管理代码变更,还能提升项目的透明度和可维护性。无论是个人项目还是大型企业级开发...

    git讲解与总结

    ## 总结 Git学习手册为读者提供了一个详细的Git使用指南,涵盖了从基础到高级的众多概念。无论是配置管理、版本控制的基础知识,还是分支管理、回滚操作和远程仓库的实践,本手册都力求详细讲解,帮助读者有效掌握...

    git总结1

    以下是对标题"git总结1"及相关描述的详细说明: ### 修改代码 1. **单个需求分支**:在进行代码修改时,推荐为每个独立的需求创建一个新的分支,如`feature/需求名称`。这样,每个分支上的提交都是针对特定需求的,...

    git常用命令总结git常用命令总结git常用命令总结git常用命令总结

    git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git...

    java学习:10.Git总结.md

    Java是一种高级的面向对象的程序设计语言,它具有广泛的应用和强大的跨平台特性。Java语言于1995年由Sun公司推出,由Java之父詹姆斯高斯林设计。Java的设计目标是提供一种易学易用、功能强大的编程语言,使开发人员...

    Git总结1

    在这个总结中,我们将探讨 Git 的一些基本操作,以及如何将本地仓库与远程仓库进行交互。 首先,了解 Git 的基本命令至关重要。`git add` 命令用于将文件变动添加到暂存区。`git add <filename>` 仅将指定文件添加...

    git常用命令总结.txt

    ### git常用命令总结 在日常开发工作中,Git作为版本控制系统被广泛使用,它能帮助团队高效地管理代码版本,提高协同工作的效率。本文将根据给定的文件信息,详细总结并解释Git中的常见命令及其用途。 #### 1. Git...

    git知识点总结

    这是我对git使用的一个总结,对想要了解git如何使用,并致力于理清楚git相关知识点的朋友有所帮助

    git命令总结

    Git是目前世界上最先进的分布式版本控制系统。以上为git命令总结。

    git操作命令总结

    ### git操作命令总结 #### 一、配置与初始化 **标题和描述中提及的知识点:** - **配置用户信息:** 使用 `git config --global user.name "zoujun"` 和 `git config --global user.email "zoujun@youku.com"` 来...

    git常用命令归纳总结

    git是linux系统管理源码常用工具,本资源归纳总结git常用命令使用。

    git常用命令总结下载

    Git是分布式版本控制系统,用于跟踪对文件或项目代码的更改。以下是对Git常用命令的详细说明: 1. **基础命令**: - **git init**:在指定的目录下创建一个新的Git仓库,初始化一个.git隐藏目录,存放版本控制的...

    git学习总结文档,

    git学习,总结,个人实践+廖雪峰老师文档总结。

    关于git的手册总结简单的git介绍,git的相关指令

    Git 是一个分布式版本控制系统,广泛应用于软件开发和协作工作中。本文将对Git的基本概念和常用命令进行详述,帮助读者理解和掌握Git的核心功能。 首先,Git有三个主要工作区域:工作区、暂存区(stage 或 index)...

    Git命令总结.md集合

    git常用命令总结,包括配置用户、分支操作、更新提交合并、tag、stash、log等命令操作集合

Global site tag (gtag.js) - Google Analytics