参考:http://www.runoob.com/git/git-tutorial.html

一、Git简介

1、Git 和 SVN 比较

(1)GIT是分布式的,SVN不是;

(2)GIT把内容按元数据方式存储,而SVN是按文件;

(3)GIT分支和SVN的分支不同,在SVN中就是版本库中的另外的一个目录;

(4)GIT没有一个全局的版本号,而SVN有;

(5)GIT的内容完整性要优于SVN;

(*)Git 命令参考文档:http://www.runoob.com/manual/github-git-cheat-sheet.pdf

2、Git 安装配置

(1)安装:http://www.runoob.com/git/git-install-setup.html

(2)配置

1、安装好 git 后,配置用户和邮箱

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

说明:--global代表对当前的用户有效,--system代表对所有的用户有效,不写代表对当前的项目有效(在linux环境下)

2、常用的配置命令

要检查已有的配置信息: git config --list
直接查阅某个环境变量的设定:git config user.name

3、Git 工作流程(略)

4、Git 工作区--暂存区--版本库

(1)工作区:电脑里的项目目录;

(2)版本库:工作区有一个隐藏目录.git,是Git的版本库;

(3)暂存区:英文叫stage, 或index,一般存放在(.git/index)中;

(4)说明:git 中的 check 命令可能会导致暂存区和工作区的改变比较危险,谨慎使用;

二、基本使用

1、git init

git init     当前目录作为仓库
git init newrepo  指定目录作为仓库,没有的话会创建一个

2、git add

git add *.c
git add README

文件加入版本管理,支持单文件、多文件(之间用空格隔开)以及通配符批量 add

3、git commit

git add > git commit -m '第一次版本提交'
git commit -am '备注'-----这个操作是添加提交一次性完成,不指定文件的话会添加提交所有的

4、git clone

git clone <repo>   克隆到当前目录
git clone <repo> <directory>    克隆到指定目录
git clone git://github.com/schacon/grit.git    还支持 http 等协议,默认的名字为 grit 可以在后面指定名称

5、git status

git status 用来查看在你上次提交之后是否有修改,加参数 -s 能够获得简短的输出,不加则输出的信息比较详细

6、git diff

git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别;git status 显示你上次提交更新后的更改或者写入缓存的改动,git diff 显示这些改动具体是啥;
有如下的应用:
#查看未缓存的改动:git diff
#查看已缓存的改动(add过的文件):git diff --cached
#查看所有改动:git diff HEAD
#简略显示修改信息:git diff --stat

7、git reset HEAD

git reset HEAD 作用是取消之前 git add 添加

8、git rm

git rm <file>
git rm -f <file>  强制删除,git add 之后只能强制删除,工作区和缓存区一起删除
git rm --cached <file>  从git的缓存区删除,工作区的文件会保留,实测好像和移出版本管理是一个效果
git rm –r *   递归删除

9、git mv

git mv README  README.md    必须要先添加版本管理才可以用 git 的 mv 和 rm 命令

三、分支管理

1、查看、创建、删除分支

git branch 查看所有分支
git branch test 创建一个分支
git branch -d test 删除一个分支,D大写是强制删除分支

2、切换分支

git checkout master 分支切换git checkout -b test 能够直接创建一个分支并直接切换到该分支下注意:切换分支前一定记得提交,因为切换分支会清空暂存区,未提交的修改不会生效

3、合并分支

(1)正常合并

git merge test 此命令是将test分支合并到当前分支

(2)合并冲突:

冲突的产生:主分支创建一个分支之后,主分支和分支中的同一个文件都进行了修改,则可能出现冲突解决:merge显示冲突之后,cat a.txt 查看两分支的不同之处,手动修改为相同之后,再 add commit 提交,即可完成合并

四、查看提交历史--标签

1、查看提交历史

git log 列出历史提交记录;
--oneline 选项来查看历史记录的简洁的版本;
--graph 选项查看历史中什么时候出现了分支、合并;
--reverse参数来逆向显示所有日志;
--author=Linus 指定查看某个作者的提交;
--since 和 --before, --until 和 --after 指定日期;
--no-merges 选项可以隐藏合并提交;

2、标签

达到一个重要阶段,并希望永远记住那个特别的提交快照,可以使用 git tag 给它打上标签
git tag -a <tagname> -m "runoob.com标签" 创建一个标签
git tag 查看所有的标签

五、连接到GitHub

1、git 和 github 通过 SSH 连接

(1)使用以下命令生成SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
(2)然后在 github:account--settings--SSH and GPG keys 输入上个命令产生的用户目录 .ssh 目录下的 id_rsa.pub 文件中的全部内容
(3)最后用如下命令进行连接测试:ssh -T git@github.com

2、添加、查看、删除远程仓库

git remote add [shortname] [url]    添加远程仓库
git remote -v  查看当前的远程仓库
git remote rm origin2  删除远程仓库
注意:一个仓库可以有多个别名

3、提取和推送远程仓库

(1)提取远程仓库的内容
git fetch origin
若远程仓库有更新,使用命令以下命令进行合并:
git merge origin/master
(2)推送到远程仓库
git add runoob-test.txt
git commit -m "添加到远程"
git push origin master

注意:push 前先要 commit

4、其他注意事项

(1)关于 checkout

git checkout a.txt        是从暂存区恢复git checkout HEAD a.txt   是从版本库恢复数据

(2)关于 rm 和 git rm 命令的区别

普通的 rm 命令只作用于工作区;提交生效前先要通过 add 将修改放入暂存区;git rm 命令作用于工作区和暂存区;

(3)关于 git log 和 git reflog

log    命令只能查看 commit 的记录;reflog 可以查看所有的记录,包括 commit、reset、merge;

(4)本地删除文件后且进行了提交,怎么恢复

git reflog              找到相应的 HEAD;git reset --hard  XXXX  通过 reset 命令恢复,其中最后的 XXXX 是 HEAD 的地址(或者键???);

(5)关于 git pull

git pull = git fetch + git merge冲突解决:将本地的内容和远程的内容改成一致的,再 add 和 commit 一下即可;

(6)本地删除文件后怎么从 github 恢复

git fetch origin                  先从远程仓库拉取;git reset --hard origin/master    将工作区、暂存区和本地仓库全部替换为远程仓库 origin 的 master 分支;后面如果 origin 仓库没有修改可以直接用这个命令进行恢复;

使用Git进行版本管理的更多相关文章

  1. 微信小程序如何使用 Git 实现版本管理和协作开发

    前言 在微信小程序开发的过程中,代码版本管理往往需要使用第三方工具进行管理.虽然微信Web开发工具提供了对Git文件版本状态的提示,但实际的使用体验依然不尽人意. 随着微信Web开发工具的更新,最新的 ...

  2. 实验一 GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  3. 实验一  GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...

  4. 实验一Git代码版本管理

    GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...

  5. 实验一&#160;&#160;GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  6. 软件工程实验一 Git代码版本管理

    实验一  GIT 代码版本管理 一.实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 二.实验内容: 1)安装git: 2)初始配置git ,gi ...

  7. 用好SVN与Git,版本管理都不是问题

    介绍一下SVN SVN:代码控制器(版本控制器),主要是为了多人协同开发项目,管理代码.也可以管理个人代码.也叫程序界的”后悔药“. SVN(是subversion的简称)是近年来一款基于C/S架构的 ...

  8. 实验1 GIT代码版本管理

    (一)实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: (二)实验内容: 1)安装git 2)初始配置git ,git init git sta ...

  9. 实验一 git代码版本管理

    实验目的 1. 了解分布式系统版本管理的核心机理. 2. 熟练掌握 git 的基本指令和分支管理指令. 实验内容 1. 安装 git.2. 初始化配置 git,git init ,git status ...

随机推荐

  1. 查询Python版本

  2. Selenium自动化测试插件—Katalon的自述

    Katalon-一款好用的selenium自动化测试插件 Selenium 框架是目前使用较广泛的开源自动化框架,一款好的.基于界面的录制工具对于初学者来说可以快速入门:对于老手来说可以提高开发自动化 ...

  3. java前后分离使用fetch上传文件失败500

    这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本 ...

  4. [Swift]LeetCode269. 外星人词典 $ Alien Dictionary

    There is a new alien language which uses the latin alphabet. However, the order among letters are un ...

  5. Python基础语法(三)

    Python基础语法(三) 1. 数值型数据结构 1.1 要点 在之前的博客也有提到,数值型数据结构在这里就不过多介绍了.在这里提及一些需要知道的知识点. int.float.complex.bool ...

  6. 两分钟搞懂UiAutomator、UiAutomator2、Bootstrap的关系

    很多同学经过一段时间的学习之后都明白了Appium的基本原理,但是越学习到后面发现出现的很多陌生名词无法弄清楚其具体作用,今天这篇文章的目的就是为了让大家来弄懂三个高频名词:UiAutomator.U ...

  7. Python 创建递归文件夹

    # 创建递归文件夹 def createfiles(filepathname): try: os.makedirs(filepathname) except Exception as err: pri ...

  8. Pycharm使用教程(三)(非常详细,非常实用)

    1. 汉化:把resources_zh.jar拷贝到PyCharm的安装目录下的lib目录,重启Pycharm即可. (resources_zh.jar汉化包关注本账号获取:链接: https://p ...

  9. 当子查询内存在ORDER BY 字句时查询会报错

    问题:当子查询内存在ORDER BY 字句时查询会报错 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解决办法:在子查 ...

  10. java基础(五)-----关键字static

    在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. ...