配置 Git 的相关参数。

Git 一共有3个配置文件:

1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。
2. 全局配置文件:Mac 系统在 ~/.gitconfig,Windows 系统在 C:\Users\<用户名>\.gitconfig
3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig

# 查看配置信息
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -l # 查看当前生效的配置信息
$ git config -l # 编辑配置文件
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -e # 添加配置项
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> --add <name> <value> # 获取配置项
$ git config <--local | --global | --system> --get <name> # 删除配置项
$ git config <--local | --global | --system> --unset <name> # 配置提交记录中的用户信息
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址> # 更改Git缓存区的大小
# 如果提交的内容较大,默认缓存较小,提交会失败
# 缓存大小单位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <缓存大小> # 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
$ git config --global color.ui true # 配置可以缓存密码,默认缓存时间15分钟
$ git config --global credential.helper cache # 配置密码的缓存时间
# 缓存时间单位:秒
$ git config --global credential.helper 'cache --timeout=<缓存时间>' # 配置长期存储密码
$ git config --global credential.helper store

git clone

从远程仓库克隆一个版本库到本地。

# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址> # 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录> # -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

git init

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

# 初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init

git status

查看本地仓库的状态。

# 查看本地仓库的状态
$ git status # 以简短模式查看本地仓库的状态
# 会显示两列,第一列是文件的状态,第二列是对应的文件
# 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
$ git status -s

git remote

操作远程库。

# 列出已经存在的远程仓库
$ git remote # 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose # 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址> # 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名> # 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名> # 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

git branch

操作 Git 的分支命令。

# 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch # 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v # 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名> # 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称> # 删除指定的本地分支
$ git branch -d <分支名称> # 强制删除指定的本地分支
$ git branch -D <分支名称>

git checkout

检出命令,用于创建、切换分支等。

# 切换到已存在的指定分支
$ git checkout <分支名称> # 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b <分支名称> # 创建并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan <分支名称> # 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>

git cherry-pick

把已经提交的记录合并到当前分支。

# 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

git add

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。

# 把指定的文件添加到暂存区中
$ git add <文件路径> # 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>] # 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>] # 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
$ git add -i [<文件路径>]
$ git add --interactive [<文件路径>]

git commit

将暂存区中的文件提交到本地仓库中。

# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit # 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>" # 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>" # 修改上次提交的描述信息
$ git commit --amend

git fetch

从远程仓库获取最新的版本到本地的 tmp 分支上。

# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名> # 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

git merge

合并分支。

# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

git diff

比较版本之间的差异。

# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff # 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged # 比较当前文件和上次提交时的差异
$ git diff HEAD # 查看从指定的版本之后改动的内容
$ git diff <commit ID> # 比较两个分支之间的差异
$ git diff <分支名称> <分支名称> # 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

git pull

从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。

# 从远程仓库获取最新版本。
$ git pull

git push

把本地仓库的提交推送到远程仓库。

# 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名> # 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

git log

显示提交的记录。

# 打印所有的提交记录
$ git log # 打印从第一次提交到指定的提交的记录
$ git log <commit ID> # 打印指定数量的最新提交的记录
$ git log -<指定的数量>

git reset

还原提交记录。

# 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
# 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>] # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

git revert

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

# 生成一个新的提交来撤销某次提交
$ git revert <commit ID>

git tag

操作标签的命令。

# 打印所有的标签
$ git tag # 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>] # 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>] # 切换到指定的标签
$ git checkout <标签名称> # 查看标签的信息
$ git show <标签名称> # 删除指定的标签
$ git tag -d <标签名称> # 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称> # 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags

git mv

重命名文件或者文件夹。

# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>

git rm

删除文件或者文件夹。

# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm <文件路径> # 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r <文件夹路径> # 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

Git操作场景示例

1. 删除掉本地不存在的远程分支

多人合作开发时,如果远程的分支被其他开发删除掉,在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:

# 使用 pull 命令,添加 -p 参数
$ git pull -p # 等同于下面的命令
$ git fetch -p
$ git fetch --prune origin

git 基本命令操作的更多相关文章

  1. Git基本命令行操作 (转)

    Git远程操作详解   作者: 阮一峰 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和 ...

  2. git基本命令和仓库操作

    首先git是什么?git是github上的一个代码托管工具,是一款代码版本管理工具,github上的代码是基于git来进行托管的.github是全球的开源社区.Git 保存的不是文件的变化或者差异,而 ...

  3. git —— 基本命令以及操作(No.1)

    git基本命令(附加描述) 1.把文件添加到暂存区$ git add readme.txt 2.把暂存区的文件文件添加到仓库$ git commit -m "提交说明" 备注:ad ...

  4. git 基本命令和操作

    设置全局用户名+密码 $ git config --global user.name 'runoob' $ git config --global user.email test@runoob.com ...

  5. Git基本命令 -- 创建Git项目

    在这里下载git:https://git-scm.com/ 安装的时候, 如果是windows系统的话, 可以勾选unix的命令行工具, 这样在windows命令行下会多出很多命令, 例如ls. Gi ...

  6. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  7. 图解 Git 基本命令 merge 和 rebase

    Git 基本命令 merge 和 rebase,你真的了解吗? 前言 Git 中的分支合并是一个常见的使用场景. 仓库的 bugfix 分支修复完 bug 之后,要回合到主干分支,这时候两个分支需要合 ...

  8. git基本命令-直接上手使用

    git基本命令-直接上手使用 此篇为直接是使用git,如果想了解其原理和其他详细信息,请关注我,看其它相关文章 git创建仓库(初始化仓库) 使用当前目录作为仓库 git init // 执行该目录后 ...

  9. git 基本命令及idea集成使用

    目录 git基本命令使用 设置签名 gitHub 服务配置秘钥 上传代码 更新代码 分支管理 bat脚本更新 idea集成git git基本命令使用 设置签名 签名和秘钥大多数是一起设置的,设置后一般 ...

随机推荐

  1. 构建 JVM(HotSpot) 源码调试环境(OpenJDK8)

    原本想在 Windows 下编译调试,但过程中遇到了诸多错误(老是报路径错误...),最后只好放弃. 此次记录调试的方法为 CentOS7 上编译,Windows 上使用 Clion 远程调试(也可直 ...

  2. OGG 从Oracle备库同步数据至kafka

    OGG 从Oracle备库同步数据至kafka Table of Contents 1. 目的 2. 环境及规划 3. 安装配置JDK 3.1. 安装jdk 3.2. 配置环境变量 4. 安装Data ...

  3. Carousel 走马灯

    在有限空间内,循环播放同一类型的图片.文字等内容 基础用法 适用广泛的基础用法 结合使用el-carousel和el-carousel-item标签就得到了一个走马灯.幻灯片的内容是任意的,需要放在e ...

  4. EUREKA 删除 or 强制下线/上线 实例

    开发环境,EUREKA 注册中心 某服务被注册了多个实例,feign 调用时 服务请求到其他实例上,请求收不到,使用一下命令删除 或者强制下线实例: 1 .DELETE  删除注册实例,但是如果被删除 ...

  5. 【WPF】非UI线程操作UI

    在线程中添加下面两行,把操作UI的命令放到一个新函数中 Action 起个名 = new Action(操作UI的函数名);要操作的控件名.Dispatcher.BeginInvoke(起个名);

  6. 微信小程序动画:高度渐变,left渐变

    今天在测试微信小程序动画的时候遇到了坑,需求是这样的点击时子元素从外部滑动回来,父元素的高度跟随子元素的高度改变. 实现子元素left为0并不复杂,但是改变父元素box的高度的时候却遇到了坑,因为是需 ...

  7. Object.assign()的用法 -- 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,返回目标对象

    语法: Object.assign(target, …sources) target: 目标对象,sources: 源对象用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. ...

  8. 【AMAD】jsonschema -- (又)一个JSON Schema的Python实现

    动机 简介 用法 个人评分 动机 JSON Schema1是一个专业词汇,可以让你注解和验证JSON文档. 使用JSON Schema的好处有: 描述你的数据格式 提供清晰的易读的文档 验证数据: 用 ...

  9. 【AMAD】newspaper -- 爬取/提取新闻网页中的文本,元数据

    动机 简介 用法 源码分析 个人评分 动机 新闻网页,结构大多是类似的. 所以,能不能用一种通用的爬取方法来提取其中的数据? 简介 Newspapaer1受到requests那种简单性API的启发,通 ...

  10. Linux C/C++基础——内存分区

    1.内存分区 在生活中,为了提高办事效率,某个单位经常会分成N个部门,每个部门职责不同,同样,为了提高 效率,我们的内存也会被分成N个区.这里我们将内存分为五个区.也有四区模型. 首先看一下一个二进制 ...