【Git】

来源:互联网 发布:sql汽车销售管理系统 编辑:程序博客网 时间:2024/06/06 01:45

1、学习网站

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000

2、git简介

如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去

 

于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

a 张三
删除了软件服务条款5
7/12 10:38

b张三
增加了License人数限制
7/12 18:09

这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪

3、Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了

4、集中式管理系统&分布式管理系统

集中式管理系统:缺点必须联网,cvs,svn


分布式管理系统:不必联网、强大的分支功能,git、促使Git诞生的BitKeeper、还有类似Git的Mercurial和Bazaar


 

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

5、安装git

window安装:msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"

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

6、创建版本库

版本库又名仓库,英文名repository

用  ls –ah    命令就可以看见当前目录下有个.git的文件夹

创建文件 vi 文件名a.txt,会自动创建/touch a.txt

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命令git commit –m “提交的注释信息”,完成

7、修改文件查看状态,以及文件变更记录(时光穿梭机)

    • 要随时掌握工作区的状态,使用git status命令。如,已经重新编辑readme.txt文件

    • $ git status# On branch master# Changes not staged for commit:#   (use "git add <file>..." to update what will be committed)#   (use "git checkout -- <file>..." to discard changes in working directory)##  modified:   readme.txt
    • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    • $ git diff readme.txt diff --git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644--- a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.此行为原来的内容+Git is a distributed version control system.此行为修改后的内容 Git is free software.

8、版本回退,穿到过去未来

    • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id/head/head^

      • 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

                   

9、工作区和暂存区

git add时将文件存到暂存区,stage


git commit时,将暂存区的文件提交到master主分支


每次修改,如果不add到暂存区,那就不会加入到commit中。

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

10 撤销修改

      未git add前撤销到上个版本所有的修改:git checkout -- readme.txt

      git add文件到暂存区后,如果想撤销修改:git reset HEAD readme.txt

      git  commit后,想要回退到上个版本,只能git reset – hard HEAD^

      可以时时通过git status来判断提示使用的命令

11、删除文件

$ rm test.txt
git上删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"
未add前恢复文件
$ git checkout -- test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

12、远程仓库

https://github.com git官网登录,username:chenmeng789,email:chenmeng201209@yeah.net

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

第1步:创建SSH Key

$ ssh-keygen -t rsa -C "youremail@example.com"

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送

在GitHub上免费托管的Git仓库,任何人都可以看到喔

电脑多个git账户,一个gitlab公司,一个github自己,两个邮箱,生成第二个key时会覆盖第一个key,可以通过配置文件解决http://www.jianshu.com/p/f7f4142a1556

比如测试github ssh -vT git@github.com ,显示success,证明成功

          待续。。。。。。
原创粉丝点击