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. centos7 安装部署jenkins

    一.简介 jenkins是一个Java开发的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能,它的运行需要Java环境. 二.搭建环境准备:# cat /etc/redhat-re ...

  2. crontab学习

    概念 日志路径 /var/log/cron 配置路径 vi /etc/crontab 参考 https://www.cnblogs.com/kenshinobiy/p/7685229.html 问题 ...

  3. Windows服务模式下tomcat开启远程调试

    测试环境:windows IDE:IDEA 2018 2.5 x64 按照图示,加以下参数加入配置中 -Xdebug -Xrunjdwp:transport=dt_socket,address=998 ...

  4. chrome小书签-实用的小功能-javascript代码段

    1.打印页面的所有脚本引用文件及代码段: javascript:var scriptarray=document.getElementsByTagName("script");fo ...

  5. C#使用CefSharp开源库开发Chrome 浏览器

    一.介绍        这个东西我以前没有接触过,但是公司项目里面有用到这个东西,所以就顺便研究一下.今天只是做了 WinForm 的测试,有时间了在试试 WPF 是如何实现的.刚开始一塌糊涂,有点麻 ...

  6. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  7. js实现一个简单的登录页面

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. Python中logging日志模块的使用

    参考https://www.cnblogs.com/CJOKER/p/8295272.html

  9. [C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应

    随着数据库数据的不断增大,查询时间也随之增长.而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s.所以在查询数据的时候,程序会出现 “超时时间已到.在操作完成之前超时时间已过或服务器未 ...

  10. pytest框架之fixture详细使用

    本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从p ...