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

版权声明:本文为博主原创文章,遵循 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安装成功! 安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "ligang"
$ git config --global user.email "381510688@qq.com"

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

三、创建版本库

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

$ mkdir learningGit
$ cd learngit
$ pwd

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

$ git init

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

yum install dos2unix
dos2unix bin/startup.sh 

四、文件操作

把文件添加到仓库:$ 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指向哪个版本号,你就把当前版本定位在哪。

记录你的每一次命令:$ 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分支上提交更改。

查看工作区和版本库里面最新版本的区别:$ 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:

$ 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仓库下运行命令

 $ git remote add origin git@github.com:381510688/learningGit.git

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

$ git push -u origin master

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

$ git push origin master

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

$ git clone git@github.com:381510688/learningGit.git
$ git clone https://github.com/381510688/learningGit.git

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券