1.Git的由来与设计理念

  Git是linux之父Linus Torvalds开发的,是一款最先进的项目版本控制系统。

  Git的由来有一个小故事,传闻起初Linux社区工作者都是通过邮件的,发送给linus,由他来手工合并代码,之所以不用CVS,SVN,是因为linus对这些软件深恶痛绝,不仅仅慢,还必须联网,使用起来也很不方便。

后来,收费的版本控制提供商BitMover处于人道主义,免费提供自己的产品使用权与Linux社区,后来因为社区中有人试图破解软件已解锁更多功能,被BitMover发现后,果断收回的软件使用权。之后的事大家都了解,

linus花来两周的时间,使用C语言开发了Git,从2005年,发展都现在,成为当下最流行最先进的版本控制系统。重新定义牛的含义^_^。

  Git与CVS,SVN最大的区别是设计思想的区别,这是我认为很了不起的设计,打破的传统的中央服务器的概念。传统的版本控制软件的工作原理,是由一台大家都可以连接到的中央服务器充当核心版本,每个人都

从这个版本下载最新code修改后,提交到中央服务器。这种设计思想最大的弊端,是所有人必须联网在能工作,并且如果中央服务器挂掉,所有人都没有办法工作了;Git是一种分布式的版本控制软件,每个人电脑上的

项目都是最终版本,就是每个人都是‘中央服务器’,如果A,B两个人的代码需要同步,那么两个人电脑连接起来同步就可以了。新员工入职,可以随便从一个老员工的机器上,down一份最新的工程。

2.Git安装

linux:sudo apt-get install git ; yum install git

windows:  现在软件包进行安装

3.Git使用

1.设置查看用户,邮箱

git config --global user.name ruiql

git config --global user.email ruiql@xxx.xxx

git config user.name

git config user.email

2.基本操作

git add xxx.xx 添加某个文件到待操作区

git commit -m ‘改动日志’ 提交到当前分支

git log 查看当前版本库提交日志

git status 查看当前版本库状态

  git reset --hard HEAD^ 回退到上个版本

git reset --hard 8a3bac1d 恢复到某个版本

git rm 删除git上的文件

在介绍 checkout -- 命令前,需要先介绍一下git的stage,我们知道创建一个文件加入到版本库,首先需要执行git add 命令,然后执行git commit 命令,每次修改文件同样也需要add-commit,那么为什么要两步操作呢?有两个作用

  1.add可以分多批次添加文件,然后一次commit全部提交到版本库中

2.git区别于svn,cvs,有一个stage,也就是暂存区东西存在,我们修改的文件在工作区,工作区的修改,通过git add 命令会提交到 stage也就是暂存区中,git commit 是将暂存区内的修改,提交到版本库上。

我们再继续介绍checkout命令,这个命令有两种使用情况,第一个情况,我们修改了工作区的文件,但是并没有通过add添加打暂存区,这个时候执行 git checkout -- xxx.xx 命令,会将版本库的版本覆盖工作区的版本,第二种情

况,如果将本地修改add到了暂存区后,又修改了工作区文件,那么执行 git checkout -- xxx.xx 命令,是将暂存区中的版本覆盖到工作区,也就是说,checkout -- 命令,会让你恢复文件内容到最近的一次add,或者commit版本。如果

文件add到了暂存区,但是没有提交,怎么撤回呢?可以通过git reset HEAD xxx.xx 命令来将暂存区内容恢复到当前版本库版本。

3.git远程库操作

1.拷贝远程库到本地:git clone git@xxx:xx/xxx.git 使用clone 命令进行copy,如果使用github,需要在github setting中ssh菜单中添加key,key所在位置:cd ~/.ssh ; more id_ras.pub  

2.本地工程关联远程库: git remote add  origin git@xxx:xx/xx.git 将当前分支关联到远程库

3.推送本地库到远程库中:git push origin master 推送分支到远程库

4.获取远程库版本: git pull origin master 获取远程库最新版本到本地库

5.本地分支与远程分支关联:git branch --set-upstream dev origin/dev 将本地dev分支与远程dev分支关联,之后就可以使用git push 直接推送到关联远程的分支上

6.将本地分支提交到远程分支上:git push origin dev:dev 将本地dev分支,提交到远程dev分支上,如果远程dev分支不存在,则创建一个,GitHub亲测

7.查看本地分支与远程分支的对应关系:git branch -vv 一个v表示本地关系,两个v表示远程关系

4.git 分支管理

1.创建分支:git checkout -b dev 创建dev分支,等同于两条命令:git branch dev (创建dev分支)git checkout dev(切换到dev分支),使用git branch 命令查看当前在那个分支(ps:当前分支有*)

2.合并分支:git checkout master 切换到master分支,git merge dev 将dev更新提交到master上

3.删除分支:git branch -d dev 删除dev分支

5.解决冲突

创建一个分支:git checkout -b dev,在dev分支修改一个文件提交,git add cba.txt , git commit -m 'modify cba.txt' , 切换分支到master ,git checkout master, 继续修改cba.txt 提交,然后合并分支,

git merge dev,这个时候不能进行快速合并,因为dev分支修改了cbc.txt , master分支也修改了cba.txt ,git不知道使用那个所为最终版本,会将两个版本的区别打印在cba.txt文件内,这个时候手动合并,提交

就可以了。经常使用的命令:

git status

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

6.git 小技巧

很多情况,我们会发生开发新功能跟改bug同时进行,如果新功能在dev-1分支上,但是master上有个紧急bug需要修复,当前的办法可以将dev代码提交,然后合并到master上,在master建立bug分支,解决

bug,然后合并到master,删除bug分支,pull master 代码继续开发功能。大部分情况是,新功能开发了一半,提交到master,会有报错或者启动不了等问题,有没有办法可以不提交代码,先改bug,然后在继续

开发的办法呢?答案是stash, 使用git stash 可以将本地环境保存起来,等干完其他事情后,再把保存的代码找回来。

1.git checkout dev 切换到dev分支

 2.开发新功能ing

3.git stash将新功能藏起来,产品说先改bug

4.git checkout master

5.git checkout -b bug-101 在master上创建改bug分支

6.改bug,然后提交

7.git checkout master 

8.git merge bug-101 改完的bug合并master

9.git checkout dev 切换到dev,我们要继续功能开发了

10.git stash list 看看我们的开发代码藏在哪里了

11.git stash apply stash@{0} 应用藏起来的代码继续开发(不会删除藏匿点)

12.git stash push  恢复到开发代码,并删除藏匿点

13.git stash drop 删除藏匿点 - -

git了解-使用笔记的更多相关文章

  1. Git Pro读书笔记

    本文为Git Pro读书笔记,所有内容均来自Git Pro 1 Git基础 1.1 记录每次更新到仓库 在Git里,文件有4种状态,modified, staged, commited, 还有一种状态 ...

  2. git的学习笔记(二):git远程操作

    1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...

  3. git tag 常用笔记

    git tag 常用笔记 查看 tag 列出现有 tag git tag 列出 v1.4.2 相关的 tag git tag -l "v1.4.2" 查看指定 tag 的信息 gi ...

  4. git学习小结 (笔记)

    Modesty helps one to go forward, whereas conceit makes one lag behind. "虚心使人进步,骄傲使人落后" 注:本 ...

  5. HIT2019春软件构造->Git&Github学习笔记

    由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git ...

  6. git的学习笔记整理

    Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...

  7. git常用操作笔记

    这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...

  8. Git源代码管理笔记

    很早之前也学过git但是没有详细的记录,这次是做个复习,巩固 若有不对的地方请您指出 目录 Git和SVN有什么区别? 什么是Git? github仓库 Star和Fork Pull request ...

  9. 版本控制工具Git的学习笔记

    在网上看到一个很不错的Git教程,学习后果断要做一下总结. 教程地址:http://www.liaoxuefeng.com/ 总结要点: 安装Git因为我个人的开发主要是基于windows环境下,所以 ...

  10. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

随机推荐

  1. Spring Boot SSL

    转载  https://howtodoinjava.com/spring-boot/spring-boot-ssl-https-example/ Spring Boot SSL 学习如何将Web应用程 ...

  2. xmlhttp js 请求

    <html> <script> var xhr = new XMLHttpRequest(); xhr.open('GET', "http://ipinfo.io/j ...

  3. abap 常用TCODE

    ABAP: 通过查询表TSTC或者TSTCT:SAP系统将所有的事务代码都存储在这个表中,包括字开发的Y*和Z* TCODE 事务代码功能描述 CG3Y 下载服务器上文件 CG3Z upload fi ...

  4. xmltodict 模块

    pip install xmltodict xmltodict.parse() 方法可以将xml数据转为python中的dict字典数据 xmltodict.unparse() 将字典转换为xml数据 ...

  5. kivy sdl2 - ImportError: DLL load failed: 找不到指定的模块。

    kivy version : windows:win python version:3.6 sdl2 - ImportError: DLL load failed: 找不到指定的模块. 运行以下dem ...

  6. Element transfer 两边数据(左右)的显示问题?

    本仙今天遇到这个穿梭框的问题 这个是我前几天刚换的(原来用的是iview的,换成了element ) 别问我为什么,用过iview的都知道 转入正题 问题:从后台获取的数据全部都显示在了我的左边框中 ...

  7. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  8. Codeforces 1086D Rock-Paper-Scissors Champion

    Description \(N\) 个人排成一排, 每个人都事先决定出剪刀.石头.布. 每次可以任意选两个相邻的人进行决斗. 规则和游戏一样. 但是如果平局, 则掷硬币来决定胜负. 输的人下场. 现要 ...

  9. insmod 签名问题

    问题现象: 通过 insmod 加载 XXX.ko 时候提示: hello: module verification failed: signature and/or required key mis ...

  10. 9 个 Yoinkmac使用小技巧,提升你的 Mac 文档解决效率

    Yoinkmac是一个工具类应用程序,用于在苹果电脑上进行临时文档暂存,就像一个“中转站”将文件从一个窗口轻松移动到另一个窗口.类似的软件包括苹果电脑上的Dropshelf和Unclutter,但相比 ...