GIT概述

一、Git是什么?

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

二、Git与SVN的区别

1、Git是分布式的,SVN是集中式,这是Git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。

2、Git把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn.cvs等的文件夹里。

3、Git分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。

4、Git没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。

5、Git的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

GIT概述_第1张图片                                                  GIT概述_第2张图片

             svn集中式版本控制                                                                                  git分布式版本控制

 

三、Git配置信息指令

git config --global user.name "zhangsan"

git config --global user.email [email protected]

git config --list  查看配置信息

四、Git的工作流程

1.克隆 Git 资源作为工作目录。

2.在克隆的资源上添加或修改文件。

3.如果其他人修改了,你可以更新资源。

4.在提交前查看修改。 提交修改。

5.在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

GIT概述_第3张图片

五、Git中相关概念

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫stage/index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以暂存区有时也叫作索引(index)。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

GIT概述_第4张图片

在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。

六、Git创建仓库

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。

使用方法

使用当前目录作为Git仓库,我们只需使它初始化。

git  add filename               把文件添加到版本库

git  commit –m                  版本提交描述

git  commit –am 'xxxx'      加入缓存区并提交

版本提交

git clone 版本克隆  

git clone https://github.com/alibaba/dubbo.git dubbo

git status –s                  查看版本状态

git diff                           查看执行 git status 的结果的详细信息。

git reset HEAD             用于取消已缓存的内容。

七、Git 分支管理

 几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

创建分支命令: git branch (branchname)

切换分支命令: git checkout (branchname)

删除分支 命令: git branch -d (branchname)

合并分支命令:  git merge

Git 查看提交历史

git log

git log –oneline  简单版本

git log --oneline –graph  查看分支情况

Git 标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

git tag -a v1.0

git log --decorate  查看tag

git tag -a v0.9 85fc7e7  追加标签 

git reset  --hard 8ff24a6803173208f3e606e32dfcf82db9ac84d8   Git回退   

八、Git 远程仓库(Github)

1、添加远程库

git remote add [shortname] [url]

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:

ssh-keygen -t rsa -C [email protected] 后面的 [email protected] 改为你在 github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开 id_rsa.pub(公钥),复制里面的 key。 回到 github 上,进入 Account => Settings(账户配置)。

2、提取远程仓库

git fetch 该命令执行完后需要执行git merge 远程分支到你所在的分支。

从远端仓库提取数据并尝试合并到当前分支: git merge

3、推送到远程仓库

git push [alias] [branch]

九、GitHub

1、watch

watch 翻译为观察 。对于别人的项目,默认自己都处于 Not watching 的状态,当你选择 Watching,表示你以后会关注这个项目的所有动态,这个项目以后只要发生变动,如被别人提交了 pull, request、被别人发起了issue等等情况,你都会在自己的个人通知中心,收到一条通知消息,如果你设置了个人邮箱,那么你的邮箱也可能收到相应的邮件。

2、star

star 翻译为星,但这个翻译没任何具体意义,这里解释为`关注`或者`点赞`更合适,当你点击 star,表示你喜欢这个项目或者通俗点,可以把他理解成朋友圈的点赞吧,表示对这个项目的支持。 不过相比朋友圈的点赞,github 里面会有一个列表,专门收集了你所有 star 过的项目,点击 github 个人头像,可以看到 your stars 的条目,点击就可以查看你 star 过的所有项目了

3、fork

当选择 fork,相当于你自己有了一份原项目的拷贝,当然这个拷贝只是针对当时的项目文件,如果后续原项目文件发生改变,你必须通过其他的方式去同步。 一般来说,我们不需要使用 fork 这个功能,除非有一些项目,可能存在 bug 或者可以继续优化的地方,你想帮助原项目作者去完善这个项目或者单纯的想在原来项目基础上己维护一个属于自己项目(比如我 fork 的 AndroidWeekly 客户端,那么你可以 fork 一份项目下来,然后自己对这个项目进行修改完善,当你觉得项目没问题了,你就可以尝试发起 pull request 给原项目作者了。 然后就静静等待他的 merge 邮件通知了。

prompting:

1、对于一些可能会经常发生变化的会不定期更新的好项目 多使用 watch.

2、喜欢一个项目就 star 它吧~

3、修改开源项目就使用 fork,这样你就可以在原项目的基础上,对项目进行修改提交,现在你是这个项目的主人啦~

 

十、Linux下安装Git

1、首先需要安装Git,可以使用yum源在线安装: yum install -y git

2、创建一个git用户,用来运行git服务 :                 adduser git

3、初始化git仓库:                                                git init --bare learngit.git

4、对git用户赋权限                                                chown -R git:git learngit.git  

5、创建SSH Key

ssh-keygen -t rsa -C [email protected] 你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。 如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

6、Git服务器打开RSA认证 然后就可以去Git服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:

1、RSAAuthentication yes        

2、PubkeyAuthentication yes

3、AuthorizedKeysFile  .ssh/authorized_keys

这里我们可以看到公钥存放在 .ssh/authorized_keys文件中。所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。 然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了

7、clone仓库    git clone [email protected]:/data/git/learngit.git

 

 

 

你可能感兴趣的:(版本控制工具)