一.创建版本库

①初始化一个Git仓库:git init

②添加文件到Git仓库:1.git add<file> ;  2.git commit

二.时光机穿梭

①查看工作区状态,文件是否被修改过:git status

②查看修改的内容:git diff

1.版本回退

①HEAD:当前版本

②HEAD^:上个版本

③定位版本:git reset --hard commit_id

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

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

2.工作区和暂存区

①工作区:就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区

②版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

③暂存区:Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区。

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

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

3.管理修改

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

4.撤销修改

①git checkout -- file:丢弃工作区的修改

②git reset HEAD file:把暂存区的修改撤销掉,重新放回工作区

5.删除文件

①git rm:从版本库中删除文件

三.远程仓库

1.添加远程库

①关联一个远程库:git remote add origin git@server-name:path/repo-name.git

②关联后第一次推送master分支的所有内容:git push -u origin master

③此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

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

2.从远程库克隆

①要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆

②Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

四.分支管理

1.创建与合并分支

①查看分支:git branch

②创建分支:git branch<name>

③切换分支:git cheakout<name>

④创建+切换分支:git cheakout -b <name>

⑤合并某分支到当前分支:git merge<name>

⑥删除分支:git branch - d <name>

2.解决冲突

①查看分支合并图:git log -- graph

eg:git log --graph --pretty =oneline --abbrev -commit

3.分支管理策略

①合并分支时加--no-ff参数:普通模式合并,合并后的历史有分支,禁用fast forward

eg:git log --no-ff-m"merge with no--ff"dev

4.Bug分支

①git stash:把当前工作现场隐藏起来,去修复bug

②git stash pop:恢复工作现场同时删除stash内容

5.Feature分支

①开发一个新feature,最好新建一个分支;

②如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

6.多人协作

①git remote -v:查看远程库信息

②git push origin branch-name:从本地推送分支

③git pull:推送失败时,抓取远程的新提交

④git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支(本地和远程分支的名称最好一致)

⑤git branch --set-upstream branch-name origin/branch-name:建立本地分支和远程分支的关联

五.标签管理

1.创建标签

①git tag <name>:新建一个标签(默认为HEAD,也可以指定commit id)

②git tag -a <tagname> -m "blablabla...":可以指定标签信息

③git tag -s <tagname> -m "blablabla...":可以用PGP签名信息

④git tag:查看所有标签

2.操作标签

①git push origin <tagname>:推送一个本地标签

②git push origin --tags:推送全部未推送过的本地标签

③git tag -d <tagname>:删除一个本地标签

④git push origin :refs/tags/<tagname>:删除一个远程标签

六.使用GitHub

①在GitHub上,可以任意Fork开源仓库;

②自己拥有Fork后的仓库的读写权限;

③可以推送pull request给官方仓库来贡献代码。

七.自定义Git

1.忽略特殊文件

①忽略某些文件时,需要编写.gitignore

2.配置别名

①我们只需要敲一行命令,告诉Git,以后st就表示statusgit config --global alias.st status

eg:

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

3.搭建Git服务器

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

例如大众点评code.dianpingoa.com

《Git教程-廖雪峰》学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. string与wstring之间的转换

    #include <string>std::string ws2s(const std::wstring& ws){    std::string curLocale = setl ...

  2. libcpmt.lib 与 msvcprt.lib

    https://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

  3. JS中修改属性

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  4. android 第三方登录---新浪微博

    1.AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个 <!--微博--> <!-- 必须注册在微博授权,分享微博时候用到 --> ...

  5. Java基本数据类型与位运算

    >>赋值运算符 赋值使用操作符“=”.它的意思是“取右边的值(即右值),把它复制给左边(即左值)”.右值可以是任何 常数.变量或者表达式 (只要它能 生成 一个值就行).但左值必须是一个明 ...

  6. Maven 更换远程仓库地址

    1.第一种方式,通过setting.xml的方式配置数据源 该文件路径D:\IDE\apache-maven-3.2.3\conf\setting.xml 该文件大部分内容都已经注释,我们需要添加如下 ...

  7. JAVE not work in linux

    1, it will print out exception, but still can convert the audio 2, it works in windows not linux, ne ...

  8. BOM,文档宽高及窗口事件小析

    (一)BOM:Browser Object Model(浏览器对象模型)页面上所有的变量都是window的属性 一.方法:1. open(,)打开一个新窗口(页面)一参为页面地址url,二参为打开方式 ...

  9. java强制类型转换

    在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...

  10. 在AngularJs中怎么设置请求头信息(headers)及不同方法的比较

    在AngularJS中有三种方式可以设置请求头信息: 1.在http服务的在服务端发送请求时,也就是调用http()方法时,在config对象中设置请求头信息:事例如下: $http.post('/s ...