前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式版本控制-Git(一)

分布式版本控制-Git(一)

作者头像
奋飛
发布2019-08-15 16:12:02
3940
发布2019-08-15 16:12:02
举报
文章被收录于专栏:Super 前端Super 前端

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://ligang.blog.csdn.net/article/details/43309643

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git管理的是修改,而不是文件。

一、集中式&分布式

1. 集中式版本控制系统(CVS),版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。 2. 分布式版本控制系统(Git),根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库。分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。

二、安装Git

1. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。 安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入:

代码语言:javascript
复制
$ git config --global user.name "ligang"
$ git config --global user.email "381510688@qq.com"

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

三、创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。 第一步,如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

代码语言:javascript
复制
$ mkdir learningGit
$ cd learngit
$ pwd

第二步,通过git init命令把这个目录变成Git可以管理的仓库。

代码语言:javascript
复制
$ git init

千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 如果使用了,可以使用以下命令将DOS格式文本文件转换成UNIX格式:

代码语言:javascript
复制
yum install dos2unix
dos2unix bin/startup.sh 

四、文件操作

代码语言:javascript
复制
把文件添加到仓库:$ git add readme.txt
把文件提交到仓库:$ git commit -m "注释" 【-m:后面输入的是本次提交的说明】

查看状态:$ git status
查看修改内容:$ git diff file

查看历史记录:$ git log
查看历史版本号:$ git log --pretty=noeline

回退到上一个版本:$ git reset --hard HEAD^
回退到上上上版本:$ git reset --hard HEAD~3
回退到指定版本:$ git reset --hard 54564494 【54564494为commit id】

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向“你要回退的版本”,然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

代码语言:javascript
复制
记录你的每一次命令:$ git reflog

五、工作区和暂存区

工作区(Working Directory):就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区 版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。 前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的: 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区; 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

代码语言:javascript
复制
查看工作区和版本库里面最新版本的区别:$ git diff HEAD -- file
撤销修改:git checkout -- file

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退内容,不过前提是没有推送到远程库。 删除文件: 直接在文件管理器中把没用的文件删,或者用rm命令删除 git status命令会立刻告诉你哪些文件被删除了 一是确实要从版本库中删除该文件,那就用删掉命令git rm file,并且git commit 另一种情况是删错了,可把误删的文件恢复到最新版本:$ git checkout -- file

六、远程仓库

第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

代码语言:javascript
复制
$ ssh-keyen -t -rsa -C "381510688@qq.com"

第二步:登录GitHub,打开"settings",“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,id_rsa.pub是公钥。 第三步:添加远程库(本地-->远程) 1. 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。如learningGit 2. 在本地的learningGit仓库下运行命令

代码语言:javascript
复制
 $ git remote add origin git@github.com:381510688/learningGit.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。 3. 把本地库的所有内容推送到远程库上,实际上是把当前分支master推送到远程。

代码语言:javascript
复制
$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。 之后可以使用简化命令:

代码语言:javascript
复制
$ git push origin master

第三步:添加远程库(远程-->本地)

代码语言:javascript
复制
$ git clone git@github.com:381510688/learningGit.git
$ git clone https://github.com/381510688/learningGit.git
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年01月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、集中式&分布式
  • 二、安装Git
  • 三、创建版本库
  • 四、文件操作
  • 五、工作区和暂存区
  • 六、远程仓库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档