Git版本管理器与猫脸五爪鱼

Git版本管理器与猫脸五爪鱼

(声明:内容按个人实践经验并部分整合自网络,供学习参考)

一、git软件是什么?它与SVN有什么异同?

Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。

svn属于集中化的版本控制系统:有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的成员通过客户端连接到这台服务器,进行文件上传和更新。

优点:a.使用简单,比较符合我们的常规思维。b.同步代码比较简单,只要一步操作即可。

缺点:a.丢失数据的风险:最显而易见的,由于集中化的特点,如果版本库的服务器磁盘发生故障等,你不能保证所有的数据已经有人提取出来了,最坏的情况是彻底的丢失整个项目的所有历史更改记录。b.网络中断的情况下,协作就无法进行了,因为无法连接服务器进行上传和更新。

git属于分布式版本控制系统:客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。

  优点:a.由于任何人每次提取操作,实际上都是一次对代码仓库的完整备份,因此近乎所有的操作都可以在本地执行,速度就是相当的快,并且可以在网络断开的时候操作仍然不受影响,可以频繁的进行提交更新,等到有网络的时候再上传到远程的镜像仓库就可以了。b.文档很详细,并且命令行的提示也很到位,用起来比较得新应手,而且很多的设置与操作跟linux操作很相近(不亏是linux之父创造的)。c.git的分支模型,相当的轻量级,被称为“必杀技”。

  缺点:a.每个开发人员都拥有所有的代码,不利于核心代码的保密(如果有重要代码需要保密,则不建议使用git)

Git和SVN之间的五个基本区别:http://blog.jobbole.com/31444/

http://www.cnblogs.com/shenliang123/p/3824383.html

 

二、git的编译安装

1,安装依赖的包

#yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc cpio perl

2,下载git压缩源码包

#Wget https://github.com/git/git/releases/tag/v2.8.0.tar.gz

3,将目录切换到压缩包包所在目录tools,

执行命令:tar  zxvf  git.v2.8.0.tar.gz  -C  /usr/local

4, 并将解压的目录git-v2.8.0修改名称为git

执行命令:mv   /usr/local/git-v2.8.0   /usr/local/git

5,编译并安装

make

make  install

6,查看git版本号

git --version

7,# whereis  git

在/etc/profile 中添加export PATH=/usr/local/git/bin:$PATH

不用重启:# source  /etc/profile

三、开启远程网络连接

△前提开启ssh远程服务器:service  sshd  start

Or: service  sshd  restart

△查看ssh服务有没有运行: ps -e | grep ssh  

△再看下这个ssh服务的网络连接情况: netstat -ntlp

△关闭linux下的ssh服务:killall sshd -9
                     或 :service sshd stop

四、SSH Key的配置:

1.

》创建Github账号,https://github.com

》Windows下打开Git Bash,创建SSH Key,按提示输入密码,可以不填密码一路回车

$ ssh-keygen -t rsa -C "注册邮箱"

然后用户主目录/.ssh/下有两个文件,id_rsa是私钥,id_rsa.pub是公钥

2.获取key,打开.ssh下的id_rsa.pub文件,里面的内容就是key的内容

$ vim  ~/.ssh/id_rsa.pub

3.登录GitHub,打开"SSH Keys"页面,快捷地址:https://github.com/settings/ssh

4.测试ssh key是否成功,使用命令“ssh -T [email protected]”,

如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。

这就表示已成功连上github。

五、哪什么又是github?

GitHub是一个利用Git提供免费的代码托管服务的网站(类似的网站还有老牌的SourceForge),很多著名的项目都托管在上面。

要想在GitHub上参与开源项目,根据Git的使用方法,有两种途径可以实现。

第一种是项目的创建人将你添加到项目的合作贡献者列表中,这样你就可以直接向这个项目推送代码。

第二种是Fork一份代码到自己的空间下,这样的一份代码自己具有推送的权限。如果开发的进展很好,项目的创建者可以将Fork的这些项目添加为Remote仓库,在他认为合适的时候将代码fetch到自己的仓库中进行合并,也可以由我们发起请求,请创始人将代码合并。GitHub上提倡的就是使用这种方式进行开发合作。

Git 支持许多数据传输协议,包括本地传输、 git://协议、http(s):// 或者 SSH传输协议 [email protected]:/path.git,除了HTTP协议之外,其他所有协议都要求在服务器端安装并运行Git。

使用远程仓库

要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某 个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展。管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分 支,定义是否跟踪这些分支,等等。

以现在比较流行的GitHub为例,如果我在上面创建了一个项目,实际上相当于使用 git init 新建了一个服务器端的仓库。如果我想在本地进行开发,那么我就需要 git clone 到我的本地。做了一些开发之后,我可以 git push 将本地的修改推送到服务器仓库中。随着项目发展,有其他人想要参与到这个项目中来,他可以在GitHub上Fork我这个项目,这样他对这个项目才有写权限,而且可以将他的工作保存到GitHub的服务器上。如果他希望将自己的工作提交给我,首先他需要在本地开发环境中添加我的远程仓库 git remote add。然后 git push remotename master 发起推送的请求,如果我接受了,他的工作就可以合并到主干中了。因为我们此时是并行开发,如果他想看我的工作,可以采用 git pull remotename 的方式将我所做的修改拉取到本地,非常的方便。

六、两地仓库关联操作

同步github到本地
1、复制项目到本地:

git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以读

git clone [email protected]:xxx/test.git  ##以SSH方式克隆到本地,可以读写

git clone https://github.com/xxx/test.git ##以https方式克隆到本地,可以读写

git fetch [email protected]:xxx/xxx.git  ##获取到本地但不合并

git pull [email protected]:xxx/xxx.git ##获取并合并内容到本地

本地提交项目到github
1、本地配置

git config --global user.name ‘用户名‘

git config --global user.email ‘注册@邮箱.com‘ #全局联系方式,可选

2、新建Git项目并提交到Github。

mkdir myptree & cd myptree

touch listen.md

git init #初始化一个本地库

git  add  listen.md #添加文件到本地仓库

git  rm  listen.md #本地倒库内删除

git commit -m "first commit" #提交到本地库并备注,此时变更仍在本地。

git commit -a  ##自动更新变化的文件,a可以理解为auto

git remote add origin [email protected]:sangredo/JobProg.git #增加一个远程服务器的别名。

git remote rm origin   ##删除远程版本库的别名

git push -u origin master #将本地文件提交到Github的origin版本库中。此时才更新了本地变更到github服务上。

第一次提交项目遇到报错,如何解决failed to push some refs to git?

方法:此时很多人会尝试下面的命令把当前分支代码上传到master分支上。

$ git push -u origin master

但依然没能解决问题,,出现错误的主要原因是github中的README.md文件不在本地代码目录中。

可以通过如下命令进行代码合并【注:pull=fetch+merge】

git pull --rebase origin master

执行上面代码后可以看到本地代码库中多了README.md文件

此时再执行语句 git push -u origin master即可完成代码上传到github。如下所示:

到网上查看结果:【刷新】

要添加的listen.md出现了。

分支版本操作
1、创建和合并分支

git branch #显示当前分支是master

git branch new-feature  #创建分支

git checkout new-feature  #切换到新分支

vi page_cache.inc.php

git add page_cache.inc.php

git commit -a -m "added initial version of page cache"

git push origin new-feature  ##把分支提交到远程服务器,只是把分支结构和内容提交到远程,并没有发生和主干的合并行为。

2、如果new-feature分支成熟了,觉得有必要合并进master

git checkout master  #切换到新主干

git merge new-feature  ##把分支合并到主干

git branch #显示当前分支是master

git push  #此时主干中也合并了new-feature的代码

时间: 2024-12-16 14:10:07

Git版本管理器与猫脸五爪鱼的相关文章

分布式版本管理器Git的基础操作指南

对于任何一个文件,在Git内都只有3种状态:已提交(committed),已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地波啊存在本地数据库中了,已修改表示修改了某个文件,但还没有提交保存,已暂存表示把已修改的文件放在下次提交时要保存的清单中. 一.基本的Git工作流程如下所示: 在工作目录中修改某些文件 对这些修改了的文件做快照,并保存到暂存区域 提交更新,将保存在暂存区域的文件快照转储到git目录中 二.Git安装 yum install curl-devel

分布式版本管理器Git的基础操作与配置指南<二>

一.Git分支介绍与创建 Git中的分支,其实本质上仅仅是个指向commit对象的可变指针.Git回使用master作为分支的默认名 字,在若干次提交后,你其实已经有了一个指向最后一次提交对象的master分支,它在每次提交的时候 都会自动向前移动. 1.Git分支的创建,切换和删除 git branch 不带参数,它会给出当前所有分支的清单,*表示当前所在的分支 git branch -v 附带显示各个分支最后一次commit信息 git branch testing 创建一个tesing分支

Git 版本管理工具(一)

Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便. Git 的速度很快,这对于诸如 Linux kerne

创建自己的git版本管理服务器

步骤一: 配置权限,让Git用户可以访问这个目录 chmod g+rx /path-to/gitroot 步骤二: 建立新的Git仓库,叫做myrepo cd /path-to/gitroot git init --bare myrepo.git 步骤三: 将能够访问的用户的秘钥添加到自己服务器上面,使他不必每次访问时都要输入密码 cat 他的秘钥 >> 服务器的~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys (这一句很重要,Li

GIT版本管理工具

原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本库的方

Git——版本管理工具(一)

Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便. Git 的速度很快,这对于诸如 Linux kerne

Cocoapods使用及git版本管理

1.git.oschina.net上新建私有项目CocoaPodsTest,拷贝git路径留作下一步使用 2.本次mac上新建xcode项目CocoaPodsTest 3.在命令行cd到项目根路径/Users/cyber/Documents/Projects/CocoaPodsTest执行以下命令 git init git remote add origin https://git.oschina.net/cybxcoder/CocoaPodsTest.git git pull origin m

版本管理器subversion的简单配置以及和apache的结合使用

linux下subversion+apache的配置我在网上看过很多关于subversion配置的blog,但是按照其 上操作并不能成功配置,也讲的不是很清楚.在此向大家推荐<使用Subversion进行版本控制>一书,网上有中文电子档,该书对subversion有很详细的介绍,感兴趣的朋友可以去看一下.这里我只介绍subversion基本使用方法,以及和apache的结合. 1.基本使用方法 svn 命令行客户端程序 svnversion 此工具用来显示工作拷贝的状态 svnlook 直接查

git学习——&lt;四&gt;git版本管理

一.git版本管理的优势 都说git比svn强大,强大在哪呢? 首先,从部署上说:svn.cvs都是集中式的,一台服务器上部署服务,所有客户端编写的代码都要提交到该服务器上.git是分布式的,所有人都可以从同一个版本库上克隆相同的版本库到自己的机子上. 这有什么好处呢? 1.使用svn和cvs,提交和check代码,你必须和服务器连上网,否则肯定不能用.git本地就是版本库,所以,你不链接其他机子也能提交到版本库中. 2.每个人都有一个版本库,不担心服务器会挂掉. 3.也可以实现一台机子进行代码