Git学习笔记

首先推荐下廖雪峰的官方网站,对Git的使用很详细,本笔记就是根据该网站教程学习整理的:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1、分布式版本管理系统,VS SVN

2、Linux下查看git

         git –version

3、安装git

         sudoapt-get install git

4、创建版本仓库

         1)创建目录

         $mkdir learngit

         $cd learngit

         $pwd

         /Users/michael/learngit

         2)初始化

         $git init

         3)基本操作

         $git add

         $git commit

4、查看代码状态和代码变化

         $git status

         $git diff

5、提交时候会出现这样一个小问题:

warming:lf willbe replaced by crlf…

这是由于Linux下和Windows下的换行不一致而产生的警告,Linux下只有换行,而Windows底下包括了回车,具体解决见博客:

http://michael-roshen.iteye.com/blog/1328142

6、查看提交日志:

         $git log

   使用相关参数使得日志输出变得简短一些:

         $git log –pretty=oneline

   这里出现的一大段前缀数字就是版本号,和SVN不同的是,这里的版本号是通过SHA计算出来的,这样才能避免在分布式版本控制中冲突。

7、版本回退(git的版本回退速度非常快,因为Git在内部有一个指向当前版本的HEAD指针,当回退版本时候,就是将HEAD指向回退的那个版本而已,所以Git总有后悔药可以吃…)

         写法一:

         $git log --hard HEAD               当前版本

$ git log --hardHEAD^             上一个版本

$ git log --hardHEAD^^                    上两个版本

写法二:

$ git log --hardHEAD~100      前100个版本

写法三:

$ git log –hard e4195e…           回退到某个版本号的版本(可以不写全,git会自己搜索)

8、查看回退log

        $ git reflog

9、工作区和暂存区的概念

         我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,而gitcommit就是往master分支上提交修改内容,可以这么理解:需要提交修改的文件放在了暂存区,然后一次性提交暂存区所有修改。

         Changenot staged for mommit      修改了

         Untrackedfiles                                     还未添加过的

         Changedto be committed                修改了并放入暂存区了(就差commit)

10、管理修改

         $git diff HEAD – readme.txt            查看该文件的修改情况

         git管理的是修改而不是文件,所以如果还没add时修改的内容在commit的时候不会被提交,只有再次被add时才会加入到修改暂存区。

11、放弃工作区修改

         $git checkout – readme.txt    让这个文件回到最近一次gitcommit或git add时的状态

12、删除文件(可以直接恢复)

         $git rm

13、连接远程库和push远程库:

         1)生成公钥

         2)到远程仓库(github上)添加公钥

         3)创建远程仓库:

                  $ git remote add origin [email protected]:kangaroo007/learngit.git

         4)push代码到远程仓库:

                   $git push –u origin master

         5)如果报错可以先:

                   $git remote rm origin

14、分支管理的意义(引用)

    “分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。”


你可能感兴趣的:(Linux)