参考: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 后,配置用户和邮箱

  1. $ git config --global user.name "runoob"
  2. $ git config --global user.email test@runoob.com
  3.  
  4. 说明:--global代表对当前的用户有效,--system代表对所有的用户有效,不写代表对当前的项目有效(在linux环境下)

2、常用的配置命令

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

3、Git 工作流程(略)

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

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

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

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

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

二、基本使用

1、git init

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

2、git add

  1. git add *.c
  2. git add README
  3.  
  4. 文件加入版本管理,支持单文件、多文件(之间用空格隔开)以及通配符批量 add

3、git commit

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

4、git clone

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

5、git status

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

6、git diff

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

7、git reset HEAD

  1. 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

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

三、分支管理

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

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

2、切换分支

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

3、合并分支

(1)正常合并

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

(2)合并冲突:

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

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

1、查看提交历史

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

2、标签

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

五、连接到GitHub

1、git 和 github 通过 SSH 连接

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

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

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

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

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

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

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

(3)关于 git log 和 git reflog

  1. log 命令只能查看 commit 的记录;reflog 可以查看所有的记录,包括 commitresetmerge

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

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

(5)关于 git pull

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

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

  1. 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. Edge Intelligence: On-Demand Deep Learning Model Co-Inference with Device-Edge Synergy

    边缘智能:按需深度学习模型和设备边缘协同的共同推理 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文. ...

  2. 剑指offer【书】之简历抒写

    项目介绍1.剪短的项目背景简短的项目背景,比如项目的规模,开发的软件的功能.目标用户等2.完成的任务这个要写详细,要让面试官对自己的工作一目了然.在用词上要注意区分“参与”和“负责”:如果只就用“负责 ...

  3. [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]

    之前一段时间都在个人公众号账号“大内老A”发布关于ASP.NET Core的系列文章,很多人留言希望能够同步到这里,所以在这里 对这些文章做一个汇总,以便于PC端阅读.如果说微软官方文档主要关于ASP ...

  4. 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信

    第17章      RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...

  5. [SQL]LeetCode184. 部门工资最高的员工 | Department Highest Salary

    The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...

  6. [Swift]LeetCode351. 安卓解锁模式 $ Android Unlock Patterns

    Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total ...

  7. [Swift]LeetCode764. 最大加号标志 | Largest Plus Sign

    In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except those cells in the given lis ...

  8. [Swift]LeetCode1021. 删除最外层的括号 | Remove Outermost Parentheses

    A valid parentheses string is either empty (""), "(" + A + ")", or A + ...

  9. JavaScript02-js使用

    JS的用法有两种: 第一种是在html页面通过引入外部js文件,第二种是直接将js代码写在html中.小例如下: 第一种 <script type="text/javascript&q ...

  10. python获取当前运行程序的名字

    import os filename = os.path.abspath(__file__) print filename 打印结果: E:\bluedon\test.py