`
阅读更多
一、Git 介绍
       Git 是一个分布式版本控制/软件配置管理软件(SCM),和SVN、CVS不同,不是集中化的版本控制系统。提供全局的配置管理;
       支持Linux、BSD、Solaris、Windows、Android;
       作者为Junio Hamano (git负责人/日本人)、Linus Torvalds(linux kernel负责人);
       Git为英格兰俗语,为饭桶、猪头的意思,
       现在一般认为Git为the stupid content  tracker,傻瓜内容跟踪器
二、Git的基本概念
       工作目录(working directory)
       暂存区域(staging area)
       本地仓库(local repo)
       对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改    
(modified)和已暂存(staged)。
       已提交表示该文件已经被安全地保存在本地数据库中了
       已修改表示修改了某个文件,但还没有提交保存
       已暂存表示把已修改的文件放在下次提交时要保存的清单中
三、Git的基本操作-安装
       1、Ubuntu
         sudo apt-get install git-core
       2、Windows
         安装msysgit、tortoiseGit
         http://code.google.com/p/msysgit/
         http://code.google.com/p/tortoisegit/
       3、Eclipse
         安装egit
         http://eclipse.org/egit/
四、Git的基本操作-配置
       /etc/gitconfig 对于所有用户使用的配置,git config --system操作该文件
       ~/.gitconfig 对于当前用户使用的配置,git config --global操作该文件
       当前工作目录的.git/config,对于当前项目有效
       git config --global user.name 'zhangsan'
       git config --global user.emal 'zahangsan@feinno.com'
       git config --global core.editor vim
       # 命令别名
       git config --global alias.co checkout
       git config --global alias.ci commit
       git config --global alias.st status
       git config --list
五、Git的基本操作-创建
       git init
         git init --bare 无工作目录,服务器版本一般这样操作

       git clone 
git clone ssh://git@192.168.199.61/~/nginx_ex.git nginx_ex
git支持多种协议,git/ssh/http/file
六、Git的基本操作-基本命令
  1、基础命令
       git add
添加到stage
       git rm
从stage或者仓库删除并删除本地文件
       git rm --cached 从stage或者仓库删除但并不删除本地文件
       git status 查看工作区状态
       git diff 比较差异
       git commit 提交更新
  2、tag标签命令
       分轻量级标签(lightweight)和带注释的标签(annotated)。
       轻量级标签和分支类似,只是不能移动。带注释的标签是存储在仓库的一个独立对象,建      
       议使用带注释的标签
       git tag 
查看所有标签
       git tag -l <pattern>
查看符合模式的标签
       git show <tagname>
查看标签信息
       git tag -a <tagname> -m <msg> <commit>
对于指定commit加带注释的标签 git tag -a v0.1 -m 'basic structure‘
       git  tag –d <tagname>
删除标签
       git push <remote-name><tagname>
       git push <remote-name> <brance-name> --tags 分享标签,推送到服务器
  3、stash命令
       在当前工作区比较凌乱,需要切换到其它分支,但不想提交现在的修改是可以使用stash功能。储藏修改过的被跟踪文件和暂存的变更,在某个时刻可以恢复到当前状态
       git stash list        查看储藏列表
       git stash apply   应用储藏但并未删除
       git stash pop     应用储藏并删除
       git stash drop    删除储藏
       git stash branch 在储藏的基础上创建分支
  4、Blame命令(责备命令)
       git blame <filename>
查看文件的每行的修改信息,用于排查问题
       git blame –L <sart>,<end>
查看指定范围的修改信息
七、Git的基本操作-祖父引用
       在引用后面加^,为本次提交的父引用
       ^后加数字表示本次提交的第几父引用,只有在分支合并的时候有用
       ~也是本次提交的父引用
       ~后加数字n表示本地提交的往上回溯n代的父引用
       例如:
         HEAD~  <==> HEAD^
         HEAD~2 <==> HEAD^^
八、Git的基本操作-撤销
       git checkout -- <filename>
撤销已索引文件的修改
       git commit --amend
修改最后一次的提交
其等价于
       git reset –soft HEAD^
…do something…
       git commit –c ORIG_HEAD
       git reset命令进行撤销重置操作
       --hard
重设 index和working directory,自从<commit>以来在working directory中的任何改变都被丢弃,并把HEAD指向<commit>。 
       --soft
index和working directory中的内容不作任何改变,仅仅把HEAD指向<commit>。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的"Changes to be committed"中
       --mixed
仅reset index,但是不reset working directory。这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,不会丢弃,但是也不会被标记成"Changes to be committed",但是会打出什么还未被更新的报告。
回滚最近一次的提交
       git reset --soft HEAD^
HEAD^指向HEAD之前最近的一次commit。 
永久删除最后几个commit
       git reset --hard HEAD~3
ps:不要担心,其实也能找到,通过git ref-log或者git log –g 查看引用日志就可以找到以前的记录
回滚pull
       git reset --hard ORIG_HEAD
执行git reset|pull|merge 时,git会把老的HEAD拷贝到文件.git/ORIG_HEAD中,在命令中可以使用ORIG_HEAD引用这个commit
九、Git的基本操作-日志
       git log -<n>
最近的几条日志
       git log -- filename
查看文件的提交记录
       git log --pretty=<format>
控制输出格式
       git log –oneline
单行显示日志
等价于 git log –pretty=oneline –abbrev-commit
       git log –graph
提供文本化图像的提交历史图
       git log --since <date>
       git log –unitl <date>
       git <since>..<until>
       git log origin/master..HEAD
在当前分支而不再远程分支的提交
        使用--not或者^表示不希望提交被包含在指定的分支
       git log refA..refB
       git log refB ^refA
       git log refB --not refA
        三个点,被两个引用的任意一个包含但不是同时包含的提交
       git log --left-right master...experiment
十、Git的基本操作-分支
       git 分支就是指向某个commit对象的指针,实际上就是一个包含所指对象校验和(40个字符的SHA-1)的文件 。
       可以参考 .git/refs 目录,查看所有的相关引用。
       分支合并是git相对别的SCM提供的强大功能,对于git而已,创建分支的代价很小,强烈推荐使用。
       git brance
列出分支
       git brance –v
列出分支并包含最后一次提交的信息
       git brance -a
        列出所有分支,包含远程跟踪分支(远程跟踪分支为不可移动的,只有在与远程仓库发生操作时才可能移动)
       git brance --merge
        列出已合并的分支
       git brance --no-merged
列出未被合并的分支
       git brance <name>
添加分支
       git brance -d <name>
删除已被合并的分支
       git brance -D <name>
强制删除分支(不论是否合并)
       git checkout <name>
切换到分支
       git checkout -b <name> <start-point>
根据起始点新建分支并切换到分支
       git merge <name>
合并分支
       git rebase <name>
衍合分支
        当发生冲突的时候,合并会被取消,需要手动解决冲突
       git mergetool
       git merge
        寻找最近的共同祖先进行三方合并,合并产生新的commit对象,其有两个parent或者快速递进
       git rebase
        回到两个分支共同祖先,根据当前分支的历次commit对象,生成补丁文件,以基底分支的最后一次commit对象为出发点,逐步应用补丁文件,生成一个新的commit对象。
       git rebase
        能产生更整洁的提交历史。
十一、Git的基本操作-远程仓库
       git remote -v
列出远程仓库
       git remote add <name> <url>
添加远程仓库
       git remote  -v show <name>
查看远程仓库
       git remote rm <name>
删除远程仓库
       git remote rename <old> <new>
重命名远程仓库
       git pull <remote-name>
        从远程仓库获取更新并合并到当前分支
       git fetch <remote-name>
从远程仓库获取更新但并不合并
       git push <remote-name>
推送更新到远程仓库
       git push <remote-name> <local brance>:<remote brance>
        推送更新到远程仓库的指定分支
       local brance
        为空则删除远程分支
十二、Git的基本操作-GIt目录
       decription :供GitWeb程序使用
       branches : 新版不在使用该文件夹
       config : 项目配置信息
       info目录 : 项目忽略模式
       hooks : 客户端或者服务器端钩子
       HEAD :指向当前分支
       index : 保存了暂存区域信息
       objects目录 :所有数据内容
       refs 目录:指向数据(分支)的提交对象的指针
十三、Git与SVN的不同之处
       svn为集中化的版本控制,svn获取最新的版本或者提交更新,历史记录等信息每次都要连接中央版本库 ;
       git为分布式的版本控制,git跟svn一样也可以有中央版本库,每个开发人员克隆原始的代码仓库,在连接不了中央服务器的情况下依然能进行本地操作;
       git把文件内容按元数据存储,svn按文件名称存储 ;
svn分支就是备份所有项目文件到版本库中的另一个目录,速度慢而且合并起来复杂
       git 分支就是指向某个commit对象的指针,实际上就是一个包含所指对象校验和(40个字符的SHA-1)的文件;
       svn每次提交会把全局版本号加一,为连续的数字版本号;
       git每次提交的生成一个SHA1的版本号,git识别简短的SHA1字符,只要大于4个字符且没有歧义就成;
       git 的工作模式很多,svn只有集中式的工作模式。
**参考资料**[i][/i][u][/u]
       http://progit.org/
       http://progit.org/book/zh/
       http://git-scm.com/
       http://github.com
       https://git.wiki.kernel.org/articles/g/i/t/GitFaq_ebc3.html
       http://sixrevisions.com/resources/git-tutorials-beginners/
       http://book.git-scm.com/
       http://gitbook.liuhui998.com/index.html
       http://sandofsky.com/blog/git-workflow.html
       http://nvie.com/posts/a-successful-git-branching-model/
       http://scottchacon.com/2011/08/31/github-flow.html


分享到:
评论

相关推荐

    Git介绍与使用-培训专用课程PPT

    Git 是一个广泛应用于软件开发领域的开源分布式版本控制系统,它的核心优势在于速度、简单的设计以及对非线性开发模式的强大支持。Git 不仅提供了一个安全、高效的代码管理环境,还允许开发者在本地创建和维护版本库...

    git代码管理艺术_GIT介绍

    git代码管理艺术_GIT介绍,介绍版本管理软件的不同,GIT的使用方法等,让大家从0基础掌握到GIT使用规范

    git 介绍及使用 ,基础使用

    Git 介绍及使用,基础使用 Git 是一个用于项目的版本管理及团队协同开发的工具。它可以帮助开发者更好地管理项目的版本,并实现团队的协同开发。下面我们来说说 Git 的安装、基本使用、远程仓库操作、分支管理、...

    Git介绍和基本使用_大数据产品部_莫海滩.pptx

    "Git介绍和基本使用" Git是当前最流行的版本管理系统之一,它可以帮助开发者们更好地管理项目的代码版本,协同办公,提高开发效率。下面将对Git的基本概念、 Git的诞生之路、Git与Svn对比、Git的基本使用、实际...

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

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

    git介绍以及常用命令

    Git 是一个强大的分布式版本控制系统,由 Linux 内核之父 Linus Torvalds 在2005年创建。它的设计目标是高效、灵活且可靠,适用于管理任何类型的文件的变更历史,尤其适合软件开发团队协作。Git 的核心概念是仓库...

    git介绍及学习指南

    git开发指南,为初学者提供一个学习指引,适合自我学习及技术培训使用

    Git 介绍及几个常用命令的使用.md

    具体介绍了在Git管理工具常用的命令的使用方法,快速掌握Git的使用

    git简介

    Git&GitHub_Git简史.avi

    Git介绍,windows下的畸形用法

    介绍了下SVN和GIT的区别和关联 介绍了一种用法 同时介绍了windows下的畸形用法

    git 文件管理PDF存储

    Git 介绍 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 是一种免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 安装非常简单,只需...

    git使用简介ppt

    #### 一、Git介绍及其特点 **Git** 是一个开源的分布式版本控制系统,被广泛应用于软件开发过程中,用于高效地管理和跟踪计算机文件的各种变动。Git 最初由 Linus Torvalds 开发,旨在更好地管理 Linux 内核的开发...

    [Github Desktop][Git 教学]图形接口04. .Git介绍与建立Repo

    [Github_Desktop][Git_教學]圖形介面#04._.Git介紹與建立Repo

    Gitbash-2.22.rar

    1. **Git介绍**:Git是一款分布式版本控制系统,由Linux之父Linus Torvalds开发,用于Linux内核源码管理。它具有高效、快速和强大的分支合并能力,是现代软件开发中不可或缺的工具。 2. **Git Bash**:Git Bash是...

    git的新手指引

    介绍在服务器上如何使用Git,包括: - **协议**:本地协议、SSH协议、Git协议、HTTP/S协议各自的特点。 - **服务器部署**:纯目录转移、小型安装、生成SSH公钥、架设服务器等。 - **公共访问**:网页界面GitWeb和...

    第五章 Git及GitHub和Gitee的应用.pdf

    本章节主要介绍了 Git 及其在 VSCode 中的应用,包括 Git 的基本概念、版本控制、下载和安装、基本操作等。 一、Git 介绍 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,用于维护 Linux...

    progit介绍文档-local-branching-on-the-cheap

    The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the Creative Commons Attribution Non Commercial Share Alike ...

    git.ppt演示文稿

    git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿

    简易导航:HTML + CSS和Git介绍库

    本资源库,"简易导航:HTML + CSS和Git介绍库",显然是为了初学者提供一个学习这两门技术以及如何结合Git进行协作开发的平台。 HTML是构成网页的基本元素,它定义了网页的结构,如标题、段落、链接、图像等。HTML5...

Global site tag (gtag.js) - Google Analytics