Git学习笔记

集中式vs分布式

基于版本的管理有分布式的也有集中式的,集中式的如CVS及SVN都是集中式的版本控制系统。集中式版本控制系统最大的问题就是必须联网才能工作,分布式的特点是每个人电脑上的版本都是一个独立的版本,都是一个完整库,分布式的安全性也会高很多,如果你电脑上的版本有问题了,如果你之前给另外一个同事传过一版你的,那么你可以从他那里要回来。
CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。
除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。

微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

安装Git

最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。
https://git-scm.com/download/win我是从这个网站下载win版本的,按照默认安装或者自定义一下,都行,安装完成后再桌面就可以看到git hash的图标。
之后将记录一下git的主要的一些命令

命令

  • 初始化一个Git仓库,使用git init命令。当然要先cd到相关的目录下,你确认要将这个目录当成一个git仓库。

  • 添加文件到Git仓库,分两步:
    第一步,使用命令git add ,注意,可反复多次使用,添加多个文件。当然add之前你要把相关的文件放到git仓库下,否则git找不到这个文件;
    第二步,使用命令git commit,完成。可以使用参数-m来提交一个修改的说明,如果你没有用这个-m的参数,那么,你当时提交了点儿啥谁能知道呢?或许过了一段时间连你自己都不知道了。

  • 运行git status命令:如果你修改了提交过的文件,使用git status命令,git hash会提示你有修改的文件。git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,文件被修改过了,但还没有准备提交的修改。
  • 虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的,所以,需要用git diff这个命令看看。后续的步骤如果你还是想根据修改的内容再次提交的话,那你就还继续用git add 和git commit吧。
  • 可以通过git log来查看日志,看看你以往的提交,它显示的方式是由最近到最远,有author,date,还有提交的时候留的附言。–pretty oneline参数可以指示显示在一行。
  • 使用git reset可以回退。在git中,head表示的是当前的版本,上一个版本的话,就是head^,上上的版本就是head^^,如果要输入很多个以前的版本,就是git reset -hard head~100.可以使用这种head的方式,也可以使用git reset –hard commit_id这种方式。
  • git reflog可以记录你的每一次命令,可以找到guid,然后回退或者前进。

继续了解几个概念

工作区:cd到的那个文件夹就是一个工作区
缓存区
版本库:使用git init会在工作区中创建一个版本库,就是那个隐藏的.git文件夹。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。

记住最重要的是git add是将修改提交到缓存区,git commit只负责提交缓存区里面的东西就好了

继续关于命令的记录

  • git checkout – file可以丢弃工作区的修改。命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    • 总之,就是让这个文件回到最近一次git commit或git add时的状态。

  • git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区,这个是对于对add到缓存区的东西进行一个撤销。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

  • 删除文件的话有两个意思,一个意思是,你想从库里面删除一个文件,这时,你需要做的时从库里面直接鼠标右键删除,然后在git hash上面输入①git rm -file ②git commit;还有一个意思是你已经从库里面鼠标右键删除了,但是你反悔了,这时,由于你没有执行上述两个命令,在版本库里面还保存着未作删除的命令,所以,你可以直接git checkout –file命令来恢复这个文件。

说了这么多,最主要的功能来了:我学习git最主要的就是要在github上面看一些优秀的开源项目,那么,就记录一下这个整体的流程吧!

首先,要在你要申请一个github的账户,申请到账户后,就要将github上面的仓库(repository)和你本地的仓库做一下关联了。因为github使用的是ssh加密传输,那么,我们要先在本地电脑上面建立一个ssh key:
$ ssh-keygen -t rsa -C "youremail@example.com"要在youremail@example.com这里替换成你自己的github注册的时候使用的邮箱。这里我基本都是一路回车就完成了,完成后会在C:\Users\jianxin\.ssh下面生成两个文件,打开id_rsa的pub文件(记事本),复制里面的内容,然后,你需要做的下一步工作是在github上面建立一个你自己的仓库:
这里写图片描述
新建仓库直接默认的就行,唯一需要注意的是仓库名称(Repository name)要和你本地的仓库名称一致。建立好仓库后,继续下一步:点击右上角settings再点击ssh and GPG keys,然后点击 new ssh key,新弹出的框中在title上面输入一个题目便于你区分这个本地电脑是单位的还是家里的或者其他,然后再在key的框里面输入你刚才复制好的内容,点击 add ssh key,这样,就建立好了你本地电脑和github上面的一个联系。
本地推送到github:然后你可以输入git remote add origin git@server-name:path/repo-name.git来建立github和本地仓库的一个连接。建立好这个连接之后,我们就可以在本地上把我们自己的项目push到github上面:git push -u origin master,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
github上面克隆到本地:也可以从github上面克隆项目到本地:
$ git clone git@github.com:yourgithubaccountname/yourepository.git
接着,最主要的功能来了:,我们需要浏览一些好的开源项目,可以将这个开源项目fork到自己的github上面,这样在我们自己的github上面就自动建立了一个存储这个开源项目的库,然后,你就可以git clone来搞到你自己本地电脑上来欣赏这个项目了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值