1.安装

  分布式版本控制:工作电脑保存完整的代码,中央服务器挂了也可以使用

  集中式版本控制:中央服务器挂了就凉凉

 sudo apt-get install git

git安装

检测安装成功

git 

2.创建版本库

 新键一个目录git_test

mkdir git_test

  

初始化git init

git init

 

3.版本的创建和使用

在git_test目录下创建一个文件code.txt

touch code.txt

创建一个版本

设置邮箱

git config --global user.email '你的邮箱'

设置用户名(作者)

git config --global user.name '小黑'

  

增加版本文件(可以添加多个文件,一起commit)

git add code.txt

提交版本文件,后面是版本说明

git commit -m '版本1.0'  

 

查看版本情况

git log

 

可以看到commit后面的版本序列号

commit 02fc1b4e2bba0d2d44485f1b0f60c425154b364e

 

更改code.txt后创建新版本,只是记录你相当于前一个版本的情况

git add code.txt

git commit -m '版本1.1'

  

可以看到新的版本信息

git log

版本的回退

HEAD^:HEAD代表当前版本,一个^代表回退一个版本

HEAD~回退版本数:~1代表回退一个版本,~100回退100个版本

回退一个版本

git reset --hard HEAD^

  

利用版本编号commit后面的数,重新回到当前版本1.1

git reset --hard 9acd9d0fa55adb14bb0e352bb99761a4144932b1  

当然用前几个编号就行,回到版本1.0

git reset --hard 02fc1b4e

 

4. 工作区和暂存区 

电脑中的目录就是工作区,这里我们的git_test就是工作区

工作区的隐藏目录.git,而是git版本库,版本库中有个暂存区(git add--工作区进暂存区)(git commit----暂存区到版本情况)

查看修改情况

git status

只会管理暂存区的修改,没有提交的暂存区的修改不管理 (简单讲,严格按照步骤来,就没啥事情)

 

丢弃工作区的修改

 git checkout -- code.txt

  

如果已经提交到暂存区了需要2步(已经ADD)

1.撤销暂存区

git reset HEAD code.txt

  

2.撤销工作区

 git checkout -- code.txt

  

对比文件的不同(-代表HEAD版本,+代表工作区的文件)

git diff HEAD -- code.txt

  

对比2个版本的不同

git diff HEAD HEAD^

  

删除文件

 rm code2.txt

  

同样可以用撤销工作区的修改,恢复文件,同样的也可以以把删除作为版本的一种

git checkout -- code2.txt

  

5.分支管理

主分支:master分支

创建分支:就是创建新的指针,改变HEAD的指向

查看有几个分支

git branch

  

创建并切换分支(原本的都存在)

git checkout -b dev

  

  

后面的操作都是在dev分支的操作(只是指针)

切换分支

git checkout master

  

合并分支(就是把master指针,放到这个分支这里)

git merge dev

  

删除分支(去掉指针)

git branch -d dev

  

冲突的解决(2个分支都修改了同一个文件),无法快速合并,可以手动修改在提交一个新的

查看冲突的修改情况

git log --graph --pretty=oneline

  

删除dev分支

 git branch -d dev

  

2个分支不编辑同一个文件,可以进行合并,不会冲突,但是不会快速提交,会帮你合并后进行新的提交,会需要你合并的说明信息

不使用快速合并,让他进行新的提交(BUG临时分支,就不会进行快速合并,会使用这个)

git merge --no--ff -m '禁用fast-forward'  dev

  

保存工作现场(去修复bug)

git stash

  

不使用快速合并修复bug,并删除BUG分支,恢复工作现场(切换回工作区)

保存工作现场列表

git stash list

  

恢复现场

git stash pop

  

6.github网站

 创建仓库、

settings中绑定SSH

生成SSH

在主目录下编辑隐藏文件

vim .gitconfig

 

生成ssh

ssh-keygen -t rsa -C '邮箱'

  

查看

cd .ssh

 

cat id_rsa.pub

  

将得到的公钥放在github上

克隆项目

在Ubuntu上使用指令克隆项目

git clone git@github.com:HEKAI3-2/xiaohei.git

  

开发上传

 

 

本地分支跟踪远程分支

git branch --set-upstream-to=origin/dev dev

  

编辑新的文件,提交不推送

可以查看跟远程分支的比较情况,并推送

从远程分支上拉取代码

git pull origin dev

  

实际使用git

<Git>git学习的更多相关文章

  1. Git 学习看这篇就够了!

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...

  2. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  3. git学习之branch分支

    作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...

  4. git学习手册

    #git学习手册 git: Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.[2] Git 是 Linus Torvalds 为了帮助管理 Linux内核开发而 ...

  5. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  6. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  7. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  8. Git学习(4)基本操作

    1.版本提交 首先,接着上个Git学习(3)继续 我们先修改test.txt文本内容,增加一些信息进去,然后保存: Add a new data 第一步:运行命令 git status 命令查看文件是 ...

  9. git学习(这个我没有整理,是我不断在学习的过程中,自己总结的,对象是我,不过有问题的,我们可以相互交流)

    每次git提交,都会有一个parent指针,指向上一次的commit ,   如果合并,master就和hotfix河道一起,就直接删除hotfix就OK     此时,虽然操作一样,大底层实现不一样 ...

  10. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

随机推荐

  1. 13.JMeter 参数化、检查点、集合点

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  2. Java内部类类型

    可以在类中的任何位置定义内部类,并在其中编写Java语句.有三种类型的内部类. 内部类的类型取决于位置和声明的方式. 成员内部类 局部内部类 匿名内部类 成员内部类 成员内部类在类中声明的方式与声明成 ...

  3. lg5169 xtq的异或和

    题目 根据一些众所周知的结论,我们先跑一棵生成树出来,之后把所有简单环都搞出来,那么\(u\)到\(v\)的路径一定可以由树上的路径和一些简单环拼起来得到 把所有简单环都插到一个线性基里,之后dfs一 ...

  4. jsp 内置对象HTTP协议

    有些对象不用声明就能够在JSP页面的脚本部分使用,这就是JSP的内置对象. JSP的内置对象有:request .response.session.application.out. 下面我们将一一介绍 ...

  5. Oracle分区表之分区范围扫描(PARTITION RANGE ITERATOR)与位图范围扫描(BITMAP INDEX RANGE SCAN)

    一.前言: 一开始分区表和位图索引怎么会挂钩呢?可能现实就是这么的不期而遇:比如说一张表的字段是年月日—‘yyyy-mm-dd’,重复率高吧,适合建位图索引吧,而且这张表数据量也不小,也适合转换成分区 ...

  6. vue-cli3使用cdn引入

    1. index.html引入: <script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js"&g ...

  7. myEclipse 搭建 Spring boot+myBatis+maven 项目流程

    1.新建一个工程 new-->maven project-->next-->next-->在filter中搜索webapp-->group id.Artifact id- ...

  8. Android消息处理:EventBus、BroadCast和Handler-优缺点比较

    上一篇研究了EventBus的使用方法,但随之而来的一系列问题也是值得思考,EventBus到底给项目带来了什么?它与Android原有的消息处理机制有什么区别和优缺点?项目在什么场景下采用Event ...

  9. nginx 和keepalived的使用

    今天看了培训视频,看到这俩玩意,挺有意思,先粘贴一下,别等到时候忘了. 官方网站 www.nginx.org nginx的特点 稳定版本是用偶数来做标记,测试版本使用奇数作为标记 通过yum来安装 安 ...

  10. PHP-缺失的第一个正数

    给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0]输出: 3示例 2: 输入: [3,4,-1,1]输出: 2示例 3: 输入: [7,8,9,11,12] ...