赞
踩
该篇文章,实为简陋,少了很多东西,只是粗浅的了解一下常用的git知识以及对可视化工具的使用
同生活中的许多伟大事件一样,Git诞生于一个极富纷争大举创新的年代。Linux内核开源项目有着为数众广德参与者。绝大数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到2002年,整个项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码。
到2005年的时候,开发Bitkeeper的商业公司Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力。这就迫使Linux开源社区(特别是Linux的缔造者 Linus Torvalds)不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:
SVN 是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,宽带够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。
下图就是标准的集中式版本控制工具管理方式:
什么是去中心化思想?
中心化的弊端:
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何写作呢?比如说自己在电脑上改了文件!,其他人也在电脑上改了文件A,这时,你们两个之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
下图就是分布式版本控制工具管理方式:
一般工作流程如下:
下图展示了git 的工作流程
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到windows上。现在,git 可以在Linux、Unix、mac和windows这几大平台上正常运行了。由于开发机大多数情况都是Windows
下载地址:https://git-scm.com/download
$ yum install curl-devel expat-devel gettext-devel\openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
点击 git-2.13.0-64-bit.exe 一直下一步即可…
图形化git管理工具,点击xxx.msi一直下一步即可…
git 提供了一个叫做git config
的工具,专门用来配置活读取相应的工作环境变量。这些环境变量,决定了git 在各个环节的具体工作方式和行为。
配置个人的用户名和电子邮件地址
$ git config --global user.name "zhangsan"
$ git config --global user.emial zhangsan@163.com
要检查自己的配置信息,可以使用git config --list
命令
有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用vimdiff的话:git config --global merge.tool vimdiff
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被git管理起来,每个文件的修改、删除,git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git 是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。
创建一个版本库非常简单,可以使用git bash 也可以使用 tortoiseGit。首先,选择一个合适的地方,创建空目录。
在当前目录D:\git\repository中点击右键选择bit bash 来启动:
使用TortoiseGit时需要在目录中点击右键菜单选择 ‘git create repository here…’
概念:
版本库:.git 目录就是版本库,将来文件都需要保存到版本库中。
**工作目录:**包含 .git 目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。
git add
命令可将该文件添加到暂存区。
添加一个或多个文件到暂存区
在D:\git\repositroy 目录下创建一个mytest.txt文件… 省略
git和其他版本控制系统如svn的一个不同之处就是具有暂存区的概念。
什么是工作区?
工作区就是你在电脑里能看到的目录,比如我的reporstory文件夹就是一个工作区。有的同学可能会说repository不是版本库吗怎么是工作区了?其实repository目录是工作区,在这个目录中的".git"隐藏文件夹才是版本库。
git 的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区(需要提交的文件修改都放到暂存区,然后一次性提交暂存区的所有修改),还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。如下图所示:
前面讲了我们把文件往git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去, 实际上就是把文件修改添加到暂存区;
第二部是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建git版本库时,git自动为我们创建了唯一的一个master分支,所以,现在,git commit
就是往master分支上提交更改。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
git status
命令用于查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用-s
参数来获得简短的输出结果:
??: 没有提交
被版本库管理的文件不可避免的要发生修改,此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库。
先修改文件
git commit test.txt -m 第一次提交
在文件上点击右键选择“显示日志”来查看文件的修改历史。
git log
# 查看test.txt文件修改历史
git log test.txt
当文件内容修改后,需要和修改之前对比一下修改了哪些内容此时可以使用“比较差异功能”
git diff
当文件修改后不想把修改的内容提交,还想还原到未修改之前的状态。此时可以使用“还原”功能
git delete a.txt
git mv 命令用于移动或重命名一个文件,目录或软连接
git mv [file][newfile]
现在我们已经在本地创建一个git仓库,又想让其它人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。
常用的远程仓库就是GitHub
首先你得在GitHub上创建一个账户。然后在GitHub上创建一个仓库
ssh 为secure shell(安全外壳协议)的缩写,由IETF的网络小组所定制。ssh是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用ssh协议可以有效防止远程管理过程中的信息泄漏问题。
使用ssh协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果你要连接到ssh服务器上,客户端软件就会向服务器发送请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密钥,然后把它和你发送过来的公用密钥进行比较。如果两个密钥一致,服务器就用公用密钥加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密钥解密。
在Windows下可以使用git bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开git bash
git bash
执行命令,生成公钥和私钥
命令:ssh-keygen -t rsa
同步到远程仓库可以使用git bash也可以使用tortoiseGit
git remote add origin git@github.com:bluecats2060/crm2010.git
git push -u origin master # 推送到远程仓库
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。
git clone git@github.com:bluecats2060/test.git
git中从远程的分支获取最新的版本到本地有俩个这样的命令:
GitHub上删除仓库
git branch
git checkout
git branch -d
master 主分支下有个test.txt文件
dev分支下也有一个test.txt文件
合并时,发送冲突
git tag
git tag -d v1.1
git show v1.0
…
git remote add origin
git remote -v
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。