概述
Git 是一个版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。Git 最为出色的是它的合并跟踪(merge tracing)能力。
Git的历史
Git是Linux的创始人Linus Tatvatds开发的开源和免费的版本管理系统,也称源代码管理系统(Source Code Manage,SCM). 它的官方网站是Http://git-scm.com
2005年的时候Linux核心开发小组和当时的他们的版本管理系统提供商产生分歧。他们不能再使用原有的版本管理系统了。当时Linus环顾宇宙之内竟然没有一个能满足自己需求的版本管理系统可用。于是他毅然决定自己动手开发一个!这就是Git。时至如今,Git已经成为许多著名系统的版本管理系统。比如Linux核心,Eclipse,Android,Ruby on Rails,PostgreSQL,jQuery……http://en.wikipedia.org/wiki/Git_(software)
Linus对这个版本控制开发时候的思考(特征):
Speed 速度(用C写的)
Simple design 简单设计
Strong support for non-linear development(thousands of parallel branches) 上千个分支
Fully distributed完全分布式
Able to handle large projects like the Linux kernel efficiently (speed and data size)
Git开发人员使用流程
一般开发者,我就是Google Source Code使用者
a) 从服务器上克隆数据库(包括代码和版本信息)到单机上。
b) 在自己的机器上创建分支,修改代码。
c) 在单机上自己创建的分支上提交代码。
d) 在单机上合并分支。
e) 新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
f) 生成补丁(patch),把补丁发送给主开发者。
g) 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
h) 一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁。
主开发者的角度(假设主开发者不用开发代码):我就是Google Source code管理员
a) 查看邮件或者通过其它方式查看一般开发者的提交状态。
b) 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
c) 向公共服务器提交结果,然后通知所有开发者
Git的记录方式
Git是比快照而不是比不同
其他版本控制系统:
Git,更像一个小型的文件系统:
Git文件的三个状态
Committed:文件安全地存储在你的本地
Modified:你修改了文件,但还未提交到你的仓库
Staged:已经标记了一个已修改文件到下一个版本的快照
Git文件状态的生命周期
Untracked相当于SVN中图标为紫色问号那个状态,也就是还没和版本控制没什么关系的
Unmodified相当于SVN中图标为绝色打勾那个状态
modified相当于SVN中图标为红色感叹号那个状态
下载安装
git最新版是Git-1.7.11-preview20120710.exe
下载地址:http://msysgit.github.com/或者http://code.google.com/p/msysgit/downloads/list
安装就一路next就行了,在这里就不做说明。
打开命令行窗口Git Bash,输入“git help git”即可打开git的帮助文档
$ git help git
Launching default browser to display HTML ...
|
D:/Program/Git/doc/git/html/git.html
Git客户端tortoisegit,现在的最新版本是TortoiseGit-1.7.12.0-32bit.msi,下载地址:http://code.google.com/p/tortoisegit/,这个安装也一路NEXT,不作讲解
初步了解Git
配置项
1. 了解系统环境变量
/etc/gitconfig(D:/Program/Git/etc/gitconfig)
.gitconfig
2. 设置身份
$ git config --global user.name "yineng huang"
$ git config --global user.email huangyineng@656463.com
3. 设置编辑器(可选)
$ git config –global core.editor emacs
4. 设置你的比较工具(可选)
$ git config –global merge.tool vimdiff
5. 检查你的配置(可选)
$ git config –list
$ git config --list
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=yineng huang
user.email=huangyineng@656463.com
|
6. 帮助
$ git help
$ git --help
如:$ git help git
注,怎么如何以上配置是用什么命令呢?请参阅帮助文档:file:///D:/Program/Git/doc/git/html/git-config.html
几个区域
blessed(remote) repository:远程仓库
local repository:本地仓库
stage area:缓冲区-->git目录下的index文件
work area:工作区
我们现在用实例来描述一下这几个区域
huangyineng@HUANGYINENG-PC ~
$ mkdir gittest1
huangyineng@HUANGYINENG-PC ~
$ cd gittest1/
huangyineng@HUANGYINENG-PC ~/gittest1
$ git init
Initialized empty Git repository in c:/Users/huangyineng/gittest1/.git/
huangyineng@HUANGYINENG-PC ~/gittest1 (master)
$ echo "hello" >> hello
huangyineng@HUANGYINENG-PC ~/gittest1 (master)
$ git add .
warning: LF will be replaced by CRLF in hello.
The file will have its original line endings in your working directory.
huangyineng@HUANGYINENG-PC ~/gittest1 (master)
$ git commit hello -m "init hello"
warning: LF will be replaced by CRLF in hello.
The file will have its original line endings in your working directory.
[master (root-commit) 4d850bf] init hello
warning: LF will be replaced by CRLF in hello.
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
create mode 100644 hello
huangyineng@HUANGYINENG-PC ~/gittest1 (master)
$
|
以上命令的操作过程是:创建gittest1目录,进入该目录,把该目录初始化为仓库。这个仓库的具体位置是:C:\Users\huangyineng\gittest1\.git。创建创建一个文件(hello),把当然目录下的所有文件添加到缓冲区中,然后提交把hello文件提交到本地仓库中。
工作区就是gittest1目录(C:\Users\huangyineng\gittest1)
缓冲区存放在.git的index文件中(C:\Users\huangyineng\gittest1\.git\index)
本地仓库会存放在.git的objects目录下(C:\Users\huangyineng\gittest1\.git\objects)
- 大小: 56.4 KB
- 大小: 14.1 KB
- 大小: 16.6 KB
- 大小: 20.9 KB
- 大小: 16.8 KB
分享到:
相关推荐
本项目是基于Java技术实现的售后服务管理系统,涵盖了软件开发中的多个关键知识点,旨在提供一个实际应用的案例,帮助开发者提升实战经验。以下是本系统涉及的主要技术及知识点: 1. **Java编程语言**:作为项目的...
总的来说,通过“uniapp实战视频点播app全栈开发-前端模板”这门课程,你不仅能掌握uniapp和Vue.js的前端开发技术,还能对全栈开发有初步理解,具备开发实际视频点播应用的能力。无论你是初级开发者还是寻求技能提升...
- **版本控制**:如果是Git仓库,还可以了解如何使用Git进行版本管理和协作。 通过深入研究这些实战项目,不仅可以巩固Python编程基础,还能提升在实际问题中应用数据分析技能的能力。无论是初学者还是经验丰富的...
5. **交互与脚本**:初步了解JavaScript基础知识,如事件处理、DOM操作,以及如何使用jQuery库来增强网页的交互性。 6. **版本控制**:可能还会涉及版本控制系统如Git的使用,以方便团队协作和代码管理。 7. **...
《Mini2440 Linux 移植开发实战指南》是一份由广州友善之臂计算机科技有限公司(以下简称“友善之臂”)创建并维护的手册,旨在帮助嵌入式爱好者深入了解Linux系统在Mini2440开发板上的移植与开发过程。该手册涵盖了...
《Android Studio开发实战:从零基础到App上线》是一本旨在帮助初学者和有经验的开发者深入了解和掌握Android Studio的实战教程。这本书涵盖了从安装配置、项目创建到App上线的全过程,通过1-16章的系统讲解,帮助...
本项目以Python为基础,旨在帮助学习者掌握从网络上获取数据、清洗数据以及进行初步分析的能力。 【描述】"python项目"表明这个压缩包可能包含一系列使用Python编写的代码和脚本,这些代码可能是用于实现特定的爬虫...
这个压缩包包含了该实战教程的初步内容,让我们一起揭开Android开发的神秘面纱。 首先,理解Android源码是提升开发者技能的关键步骤。Android是一个开源的移动操作系统,其源码包含了系统运行所需的所有组件,如...
进行本章的实战前,推荐您参照《docker下的Jenkins安装和体验》做安装和体验的实战,以便对Jenkins服务有初步了解;GitHub收到提交的代码后要主动通知Jenkins,所以Jenkins所在服务器一定要有外网IP,否则GitHub无法...
这个"iOS开发练手项目(OC版)"提供了一个基础的实践平台,适合初学者提升技能或对iOS应用开发有初步理解的人进行练习。项目以"RoadMapiOS-master"为名,我们可以从中学习到以下关键知识点: 1. **Objective-C基础*...
3. **网络编程**:QQ是一个即时通讯工具,因此学员需要了解TCP/IP协议,学会如何创建网络连接,发送和接收数据,实现客户端与服务器的通信。 4. **多线程技术**:为了实现聊天功能的实时性,多线程是必不可少的。...
- **SwiftUI入门**:对于新版的SwiftUI框架进行初步介绍,了解其优势和基本用法。 - **调试技巧** - **断点设置**:如何利用断点进行程序调试。 - **性能分析**:利用Instruments工具分析应用程序的性能瓶颈。 -...
通过以上介绍,你应该对PHP的基本应用有了初步的了解。在实践中不断探索和学习,相信你能在最短时间内熟练掌握PHP编程,为你的Web开发之旅打下坚实的基础。记得,学习编程是一个持续的过程,不断地练习和项目实战...
### Jenkins Maven Svn Tomcat 持续集成实战 #### 1. 传统网站部署的流程 在传统网站部署流程中,通常会经历以下几个步骤: 1. **需求分析**:根据用户需求制定功能规格。 2. **原型设计**:创建网站的初步视觉...
第一章可能引导学生了解版本控制的重要性,并初步学习如何使用Git进行代码管理。 5. **软件设计模式**:设计模式是解决常见软件问题的标准化解决方案,如工厂模式、单例模式等。学生会学习到一些基本的设计模式及其...
- **逐步增加复杂度**: 在完成初步项目后,尝试添加更多功能或尝试更复杂的项目。 - **错误调试**: 学会使用调试工具定位并修复代码中的问题。 - **性能优化**: 学习如何优化代码,提高应用程序的运行效率。 #### ...
《AXURE RP8实战手册 官方完整版》是一本专为已经初步掌握Axure RP8的用户设计的深入学习指南。AXURE RP8是一款强大的原型设计工具,广泛应用于产品设计、交互设计以及用户体验设计等领域。通过这本书,读者将能够...