一、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 是一个广泛应用于软件开发领域的开源分布式版本控制系统,它的核心优势在于速度、简单的设计以及对非线性开发模式的强大支持。Git 不仅提供了一个安全、高效的代码管理环境,还允许开发者在本地创建和维护版本库...
git代码管理艺术_GIT介绍,介绍版本管理软件的不同,GIT的使用方法等,让大家从0基础掌握到GIT使用规范
Git 介绍及使用,基础使用 Git 是一个用于项目的版本管理及团队协同开发的工具。它可以帮助开发者更好地管理项目的版本,并实现团队的协同开发。下面我们来说说 Git 的安装、基本使用、远程仓库操作、分支管理、...
"Git介绍和基本使用" Git是当前最流行的版本管理系统之一,它可以帮助开发者们更好地管理项目的代码版本,协同办公,提高开发效率。下面将对Git的基本概念、 Git的诞生之路、Git与Svn对比、Git的基本使用、实际...
Git 是一个分布式版本控制系统,广泛应用于软件开发和协作工作中。本文将对Git的基本概念和常用命令进行详述,帮助读者理解和掌握Git的核心功能。 首先,Git有三个主要工作区域:工作区、暂存区(stage 或 index)...
Git 是一个强大的分布式版本控制系统,由 Linux 内核之父 Linus Torvalds 在2005年创建。它的设计目标是高效、灵活且可靠,适用于管理任何类型的文件的变更历史,尤其适合软件开发团队协作。Git 的核心概念是仓库...
git开发指南,为初学者提供一个学习指引,适合自我学习及技术培训使用
具体介绍了在Git管理工具常用的命令的使用方法,快速掌握Git的使用
Git&GitHub_Git简史.avi
介绍了下SVN和GIT的区别和关联 介绍了一种用法 同时介绍了windows下的畸形用法
Git 介绍 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 是一种免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 安装非常简单,只需...
#### 一、Git介绍及其特点 **Git** 是一个开源的分布式版本控制系统,被广泛应用于软件开发过程中,用于高效地管理和跟踪计算机文件的各种变动。Git 最初由 Linus Torvalds 开发,旨在更好地管理 Linux 内核的开发...
[Github_Desktop][Git_教學]圖形介面#04._.Git介紹與建立Repo
1. **Git介绍**:Git是一款分布式版本控制系统,由Linux之父Linus Torvalds开发,用于Linux内核源码管理。它具有高效、快速和强大的分支合并能力,是现代软件开发中不可或缺的工具。 2. **Git Bash**:Git Bash是...
介绍在服务器上如何使用Git,包括: - **协议**:本地协议、SSH协议、Git协议、HTTP/S协议各自的特点。 - **服务器部署**:纯目录转移、小型安装、生成SSH公钥、架设服务器等。 - **公共访问**:网页界面GitWeb和...
本章节主要介绍了 Git 及其在 VSCode 中的应用,包括 Git 的基本概念、版本控制、下载和安装、基本操作等。 一、Git 介绍 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,用于维护 Linux...
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演示文稿
本资源库,"简易导航:HTML + CSS和Git介绍库",显然是为了初学者提供一个学习这两门技术以及如何结合Git进行协作开发的平台。 HTML是构成网页的基本元素,它定义了网页的结构,如标题、段落、链接、图像等。HTML5...