学习 Git 这一篇就够了


第一章 Git 概述

1.一、Git 概述

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。git

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。服务器

Git 与经常使用的版本控制工具 SVN,CVS,Subversion 等不一样,它采用了分布式版本库的方式,没必要服务器端软件支持。分布式

Git 不只仅是个版本控制系统,它也是个内容管理系统 (CMS),工做管理系统等。ide

若是你是一个具备使用 SVN 背景的人,你须要作必定的思想转换,来适应 Git 提供的一些概念和特征。工具

1.二、Git 官网

官方地址:https://git-scm.com/fetch

下载地址:https://git-scm.com/downloads操作系统

1.三、Git 安装

安装版本:Git-2.22.0-64-bit.exe版本控制

img

img

img

img

img

img

img

img

img

img

img

img

img

第二章 Git 工做流程

2.一、单人开发流程

img

2.二、团队内部协做

img

第三章 Git 基本操做

3.一、配置的操做

3.1.一、查看当前 Git 配置

git config --list复制代码

3.1.二、编辑当前 Git 配置

编辑本地仓库级别的配置文件: 仅在当前本地仓库范围有效,该文件默认在工做空间/.git/config日志

git config -e复制代码

编辑系统用户级别的配置文件: 登陆操做系统用户范围有效,该文件默认在~/.gitconfigblog

git config -e --global复制代码

3.1.三、添加当前 Git 签名

本地仓库级别 Git 签名:

git config user.name [用户名称]
git config user.email [用户邮箱]复制代码

系统用户级别 Git 签名:

git config --global user.name [用户名称]
git config --global user.email [用户邮箱]复制代码

3.二、初始化操做

# 在当前目录建立一个本地仓库
git init

# 在当前目录建立指定名称目录,并将其初始化本地仓库
git init [仓库名称]复制代码

3.三、暂存区操做

3.3.一、添加文件

# 添加指定文件到暂存区
git add [文件1] [文件2] ...

# 添加指定目录到暂存区
git add [目录名]

# 添加当前目录的全部文件到暂存区
git add .复制代码

3.3.二、删除文件

# 普通删除工做区文件,而且将此次删除放入暂存区
git rm [文件1] [文件2] ...

# 强制删除工做区文件,而且将此次删除放入暂存区
git rm --force [文件1] [文件2] ...

# 若是想把文件从暂存区域移除,但仍然但愿保留在当前工做目录中,使用 --cached 选项便可
git rm --cached [文件1] [文件2] ...复制代码

3.3.三、更名文件

# 更名文件,而且将这个更名放入暂存区
git mv [旧文件名] [新文件名]复制代码

3.3.四、查看状态

# 文件,文件夹在工做区,暂存区的状态
git status复制代码

3.四、本地库操做

3.4.一、从暂存区提交文件

# 提交暂存区到本地仓库
git commit -m [备注信息]

# 提交暂存区的指定文件到本地仓库
git commit -m [备注信息] [文件1] [文件2] ...

# 提交工做区自上次commit以后的变化到本地仓库
git commit -a

# 提交时显示全部diff信息
git commit -v

# 使用一次新的commit,替代上一次提交
# 若是文件没有任何新变化,则用来改写上一次commit的备注信息
git commit --amend -m [备注信息]

# 重作上一次commit,并包括指定文件的新变化
git commit --amend [文件1] [文件2] ...复制代码

3.4.二、从远程库克隆文件

# 下载远程仓库的一个项目(包括历史记录版本)到本地的当前目录下
git clone [远程仓库项目地址]复制代码

3.4.三、从远程库更新文件

# 下载远程仓库的全部变更
git fetch [远程仓库项目地址]复制代码

3.4.四、查看推送历史版本

# 显示当前分支的版本历史
git log

# 显示当前分支的版本历史,美化输出格式(显示所有hash值)
git log --pretty=oneline

# 显示当前分支的版本历史,美化输出格式(显示部分hash值)
git log --oneline

# 显示当前分支的版本历史,以及每次commit发生变动的文件
git log --stat
 
# 根据关键词搜索提交历史
git log -S [关键词]

# 显示指定次数的提交历史
git log -10复制代码

3.五、远程库操做

3.5.一、别名设置

# 查看当前全部远程地址别名
git remote -v

# 增长一个新的远程地址别名
git remote add [远程地址别名] [远程地址]

# 显示指定的远程地址的信息
git remote show [远程地址别名]复制代码

3.5.二、推送分支

# 上传本地指定分支到远程仓库
git push [远程地址别名] [本地分支名]

# 强行推送当前分支到远程仓库,即便有冲突
git push --force [远程地址别名]
 
# 推送全部分支到远程仓库
git push --all [远程地址别名]

# 删除远程分支
git push [远程地址别名] --delete [远程分支名]复制代码

3.六、工做区操做

3.6.一、从本地库检出

# 恢复暂存区的指定文件到工做区
git checkout [文件1] [文件2] ...
 
# 恢复某个commit的指定文件到暂存区和工做区
git checkout [commithash] [文件1] [文件2] ...
 
# 恢复暂存区的全部文件到工做区
git checkout .复制代码

3.6.二、从远程库拉取

# 取回远程仓库的变化,并与本地分支合并
git pull [远程地址别名] [本地分支名]复制代码

3.6.三、比较文件差别

# 将工做区中的文件和暂存区进行比较
git diff [文件名]

# 将工做区中的文件和本地库历史记录比较
git diff [commithash] [文件名]

# 查看未提交的暂存
git diff --cached复制代码

3.七、重置各区内容

# 用commithash的内容重置HEAD内容
git reset --soft [commithash]

# 用commithash的内容重置HEAD内容,重置暂存区
git reset --mixed [commithash]

# 用commithash的内容重置HEAD内容,重置暂存区,重置工做目录
git reset --hard [commithash]复制代码

3.八、历史版本回退

  • 基于哈希索引值的操做
    • git reset --hard [commithash]
    • 注意:该方法既能够前进,也能够后退,是推荐使用的方法
  • 使用 ^ 符号:只能后退
    • git reset --hard HEAD^
    • 注意:一个 ^ 表示后退一步,n 个表示后退 n 步
  • 使用~ 符号:只能后退
    • git reset --hard HEAD~n
    • 注意:表示后退 n 步

3.九、标签签名管理

# 列出全部tag
git tag

# 查看tag信息
git show [tag]

# 新建一个tag在当前commit
git tag [tag]

# 新建一个tag在指定commit
git tag [tag] [commithash]

# 删除本地tag
git tag -d [tag]

# 提交指定tag
git push [远程地址别名] [tag]

# 删除远程tag
git push [远程地址别名] :refs/tags/[tagName]

# 提交全部tag
git push [远程地址别名] --tags复制代码
第四章 Git 分支管理

4.一、分支概述

几乎全部的版本控制系统都以某种形式支持分支。

使用分支意味着你能够把你的工做从开发主线上分离开来,以避免影响开发主线。

在不少版本控制系统中,这是一个略微低效的过程,经常须要彻底建立一个源代码目录的副本。

对于大项目来讲,这样的过程会耗费不少时间。

有人把 Git 的分支模型称为它的 “必杀技特性”,也正由于这一特性,使得 Git 从众多版本控制系统中脱颖而出。

为什么 Git 的分支模型如此出众呢?

Git 处理分支的方式可谓是难以置信的轻量,建立新分支这一操做几乎能在瞬间完成,而且在不一样分支之间的切换操做也是同样便捷。

与许多其它版本控制系统不一样,Git 鼓励在工做流程中频繁地使用分支与合并,哪怕一天以内进行许屡次。

理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,而且今后真正改变你的开发方式。

4.二、建立分支

# 建立指定名称的本地分支
git branch [分支名]复制代码

4.三、查看分支

# 列出全部本地分支
git branch

# 列出全部本地分支以及每一个分支最新的版本
git branch -v

# 列出全部远程分支
git branch -r

# 列出全部本地分支和远程分支
git branch -a复制代码

4.四、切换分支

# 切换到指定的分支
git checkout [分支名]

# 切换到上一个分支
git checkout -

# 新建一个本地分支,指向某个tag
git checkout -b [新建分支名称] [tag]复制代码

4.五、合并分支

# 第一步:切换到被合并分支上
git checkout [被合并分支名]

# 第二步:执行 merge 命令
git merge [要合并分支名]复制代码

4.六、删除分支

# 删除本地分支
git branch -d [本地分支名]复制代码

4.七、解决冲突

冲突的表现:

img

冲突的解决:

  • 第一步:编辑文件,删除特殊符号
  • 第二步:把文件修改到满意的程度,保存退出
  • 第三步:git add [文件名]
  • 第四步:git commit -m “日志信息”
相关文章
相关标签/搜索