Git常用指令的总结。


前言

本篇文章记录常用的git指令,并列出相应的使用示例。

该文章的主要目的是作为查询字典,随时通过目录查找对应指令,并从示例中了解使用方式。文章不涉及复杂指令以及指令中的各种复杂参数,仅记录常用且简单的git指令。

各位读者如果觉得整理的还可以,可以点赞收藏,方便随时打开查找指令。(●’◡’●)

本文内容:

  • git的理解
  • git的版本管理
  • git的分支管理
  • git的远程管理
  • git的标签管理

1.git的理解

我个人对于git有以下几点的理解,分别是:

  1. git本身不存储全部代码,而是保存每次提交的代码快照(代码改变的内容),通过恢复快照来实现代码的版本管理。
  2. git中存在四个区域,分别是本地工作区(WorkSpace),缓存区(Index),本地仓库区(Repository),远程仓库区(Remote),其中本地工作区就是本地代码所在位置,缓存区用来存储修改后的代码快照,本地仓库区用来存储缓存区递交过来的代码快照,远程仓库区是用来在远程服务器存储自己代码,并进行版本控制。
  3. 切换分支的时候,本地工作目录的文件和代码是会变的。
  4. git四个区域的相互转化可以通过下图中的命令来实现,(图片来自网络):
    在这里插入图片描述
  5. git clone指令和pull指令的区别,clone是本地没有repository时,将远程repository整个下载过来。pull是本地有repository时,将远程repository里最新的commit数据下载过来,并且与本地分支合并
  6. git用来控制版本主要通过HEAD指针来实现,其中HEAD指针会指向当前分支最新的提交。默认分支为master。具体理解可以如下图所示:
    在这里插入图片描述

2.git的版本管理

2.1 git config 配置/查看

git config 配置文件共有三个,分别对应三个等级。位置如下(在windows下):

软件配置文件:(git的安装位置)/Git/etc/gitconfig
全局配置文件:C:user/(用户名)/.gitconfig
项目配置文件:(项目位置)/.git/config

软件配置文件针对全局用户,全局配置文件针对当前用户,项目配置文件针对当前项目。

当使用git时,配置文件会逐级覆盖,项目配置文件的内容覆盖全局配置文件的内容,然后再覆盖软件配置文件的内容。(重复内容覆盖,不重复内容增添)

2.1.1 git config --global user.name [userName]

  • 作用:
    在全局配置文件中添加git用户名字。[userName]表示用户设定的名字。
    全局配置文件位于C:user/(用户名)/.gitconfig。

  • 示例:
    在这里插入图片描述
    在C:user/(用户名)/.gitconfig文中的展示如下(这是我已经添加好的,读者主要参考name那一栏)。
    在这里插入图片描述

2.1.2 git config --global user.email [Email]

  • 作用:
    在全局配置文件中添加git用户邮箱。[Email]表示用户设定的邮箱。
    全局配置文件位于C:user/(用户名)/.gitconfig。

  • 示例:
    在这里插入图片描述
    在C:user/(用户名)/.gitconfig文中的展示如下(这是我已经添加好的,读者主要参考email那一栏)。
    在这里插入图片描述

2.1.3 git config --list

  • 作用:
    查看当前全部的配置内容(覆盖后的结果)。

  • 示例:
    在这里插入图片描述

2.1.4 git config --list --show-origin

  • 作用:
    查看当前配置文件的内容以及其文件所在位置

  • 示例:
    在这里插入图片描述

2.1.5 git config --global alias.[anotherName] “[orgCommandLine]”

  • 作用:
    给已知的命令起别名,[anotherName]是用户设定的别名,[orgCommandLine]是需要改名的命令。

  • 示例:
    用字符"l"来代替,config --list命令。使用方法如下图:
    在这里插入图片描述
    此时,修改后的配置文件也更新为:
    在这里插入图片描述

2.2 git 项目的建立和管理

2.2.1 git init

  • 作用:
    对项目进行git初始化,即当前路径下添加git服务,实现对当前路径下文件的版本控制。

  • 示例:
    在这里插入图片描述
    此时,在当前路径下就会出现.git文件夹(里面存储了项目配置,快照,指针等相关文件)。
    在这里插入图片描述

2.2.2 git status

  • 作用:
    查看当前项目的状态。
    包含index区中的内容,被修改的内容,没有被追踪的内容。

  • 示例:
    在这里插入图片描述
    为了更好的理解,用我另一个项目中的git status进行解释:
    在这里插入图片描述

2.2.3 git add [fileName]

  • 作用:
    添加文件到index工作区。[fileName]是需要被添加的文件名。

  • 示例:
    在这里插入图片描述

2.2.4 git commit (-m “此次提交的描述”)

  • 作用:
    将index区中的内容一次性提交到本地仓库中。-m参数后为此次commit的描述,建议写上。

  • 示例:
    在这里插入图片描述

2.2.5 git log (- [num])

  • 作用:
    显示之前commit命令的历史记录。如果后面加 - [num],则只展示倒数第 [num]次的提交记录。
    只显示当前分支的历史记录,其他分支的历史记录不显示。分支的概念见 "3.git的分支管理"

  • 示例:
    在这里插入图片描述
    此时,为了显示更多历史记录,我们创建一个readme.md文件,并进行commit。
    在这里插入图片描述
    当在git log 后添加 - [num]指令后,示例如下:
    在这里插入图片描述

2.2.6 git reflog

  • 作用:
    记录git的每一次commit命令.

  • 示例:
    在这里插入图片描述

2.2.7 git diff

  • 作用:
    如果被追踪过的文件(包含被add到index区的文件和被commit后的文件)发生修改,则可以通过git diff命令查看修改的内容。

  • 示例:
    此时readme.md中的文件内容如下图:
    在这里插入图片描述
    我们对其内容进行修改,结果如下图:
    在这里插入图片描述
    通过git diff命令查看修改内容,示例如下:
    在这里插入图片描述

2.2.8 git reset

  • 作用:
    用来重置到指定版本。
    方式有两种,分别如下:
    1 git reset --hard HEAD^
    (^表示上个版本, ^^表示上上个版本,以此类推。当然如果回退版本过多,则使用~[num]的形式,例如回退100个版本,则为HEAD~100)
    2 git reset --hard [CommitID]
    [CommitID]指的是commit提交时的ID

  • 示例:
    首先,将修改readme.md进行commit。
    在这里插入图片描述
    但是,此时发现最新commit提交的内容有问题,则进行上个版本回退:
    在这里插入图片描述
    在这里插入图片描述
    也可以通过commitID回退到指定版本,如下图所示:
    在这里插入图片描述

2.2.9 git checkout [fileName]

  • 作用:
    将版本库中的 [fileName]文件覆盖当前工作区中的 [fileName]文件(没有会重新创建),无论是当前工作区的 [fileName]文件是被修改还是被删除,都会被还原。
    注意这个命令很危险,当前文件的任何修改都会被复原,需要慎重。

  • 示例:
    把readme.md中添加新的一行。
    在这里插入图片描述
    通过checkout来一键还原。
    在这里插入图片描述

2.2.10 git commit --amend

  • 作用:
    这个命令同样会将index区的内容提交,但是不会显示上次commit的历史。
    这个命令的作用就是保证commit的历史记录不会太乱。

  • 示例:
    原始log记录为:
    在这里插入图片描述
    通过commit --amend 来提交,其中通过git log不会显示上个commit的记录,如下图所示:
    在这里插入图片描述

但是git reflog可以完全显示所有的log
在这里插入图片描述

2.2.11 git rm [fileName]

  • 作用:
    将指定文件从暂存区和工作区中删除,[fileName]为文件名。
    如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
    [未被追踪的文件,无法被git删除。]
  • 示例:
    在这里插入图片描述

3. git的分支管理

3.1 git branch

  • 作用:
    查看分支状况。
    当前分支前面会标一个*号。
  • 示例:
    在这里插入图片描述

3.2 git branch [BranchName]

  • 作用:
    如果在git branch后添加[BranchName],则代表创建名字为[BranchName]的新分支。

  • 示例:
    在这里插入图片描述

3.3 git checkout [BranchName] :切换分支

  • 作用:
    切换指定分支。

  • 示例:
    在这里插入图片描述

3.4 git switch (-c [BranchName])

  • 作用:
    切换指定分支。
    如果添加(-c [BranchName]),则表示创建新分支并切换。
    checkout不仅具有切换分支功能,还具有回溯文件的功能,为了避免误用,才有switch这个新命令。

  • 示例:
    切换分支功能。
    在这里插入图片描述
    创建分支并切换。
    在这里插入图片描述

3.5 git merge [BranchName]

  • 作用:
    git merge命令用于合并 指定分支到当前分支。默认是fast forward模式。
    git合并分支很快,就改指针指向,工作区内容也不变。合并后原始分支还存在。

不使用Fast forward模式,merge合并不会指向被合并的分支,而是重新创见一个新的合并后分支。
git merge bug2 --no-ff, 其中--no-ff指的是强行关闭fast-forward方式。
在这里插入图片描述

  • 示例:
    先创建新的分支。
    在这里插入图片描述
    切换到master分支,如下图所示:
    在这里插入图片描述
    合并指定分支(下图中指的是bug2)到当前分支中。
    在这里插入图片描述

3.6 git branch -d [BranchName]

  • 作用:
    删除指定分支。

  • 示例:
    在这里插入图片描述

3.7 git stash

  • 作用:
    保存工作现场。当需要临时切换分支来解决别的问题,但本地工作还未完成无法提交时,可以通过git stash命令来临时保存工作现场。等处理完分支内容后,再恢复现场继续工作。
    切换分支后,本地临时修改的文件或者添加的文件都会丢失(除非commit),所以需要存储现在的工作环境。

  • 示例:
    当前的工作环境如下图所示:
    在这里插入图片描述
    此时readme.md被修改了,我们就需要通过git stash来存储工作环境,如下图所示:
    在这里插入图片描述

3.8 git stash list

  • 作用:
    查看被存储的工作环境。

  • 示例:
    其中stash@{0}为存储现场的ID。
    在这里插入图片描述

3.9 git stash apply [stashID]

  • 作用:
    恢复被存储的工作环境。

  • 示例:
    在这里插入图片描述

3.10 git stash drop [stashID]

  • 作用:
    删除被存储的工作环境。
    通过git stash apply恢复后,原本被存储的stash@{0}还存在。

  • 示例:
    在这里插入图片描述

3.11 git stash pop [stashID]

  • 作用:
    恢复工作现场,并删除stash中存储的工作现场。

  • 示例:
    在这里插入图片描述

3.12 git log --graph --all

  • 作用:
    以树状图的形式,查看全部分支的记录。
    切换分支后,工作区的文件也会改变。

  • 示例:
    在这里插入图片描述

3.13 git cherry-pick [commitID]

  • 作用:
    git cherry-pick命令的作用,就是将指定的commit内容合并到当前分支中。可以参考下图来理解:

a=>b=>c (HEAD=>master)
       |
       d=>e=>f (feature)

git cherry-pick e

a=>b=>c=>e (HEAD=>master)
       |
       d=>e=>f (feature)

  • 示例:
    在这里插入图片描述
    在这里插入图片描述

4. git的远程管理

4.1 git remote -v “查看远程库的信息。”

  • 作用:
    查看远程库的信息。

  • 示例:
    在这里插入图片描述

4.2 git remote rm [branchName] “删除现有的远程仓库。”

  • 作用:
    删除现有的远程仓库。

  • 示例:
    如果出现error: remote origin already exists.则表示远程仓库分支存在,需要删除后再进行后续操作。
    在这里插入图片描述

4.3 git remote add [branchName] [url]

  • 作用:
    添加远程仓库。

  • 示例:
    首先,在github上创建一个空的repository。
    在这里插入图片描述
    然后,通过git remote add添加远程仓库,如下图所示:
    在这里插入图片描述

4.4 git push [远程分支名] [本地分支名]

  • 作用:
    将本地仓库的内容推送给远程服务器中。

orgin是远程仓库分支名字
master是本次仓库分支名字

  • 示例:
    此时远程仓库的内容为空。
    在这里插入图片描述
    在这里插入图片描述
    推送完后,远程仓库的就会保存当前分支下最新commit的结果,如下图所示:
    在这里插入图片描述

4.5 git clone [url]

  • 作用:
    把远程仓库中的代码clone到本地工作区上。clone指的是本地没有repository时,将远程仓库中的所有内容(日志,分支等)下载到本地。

  • 示例:
    创建一个空的文件夹,如下图:
    在这里插入图片描述
    通过git clone指令把远程仓库中的内容全部下载下来,首先找到对应远程仓库的url,如下图:
    在这里插入图片描述
    通过git clone命令进行下载,如下图:
    在这里插入图片描述
    clone后的仓库中,包含之前所有的commit版本。
    在这里插入图片描述

4.6 git pull [url]

  • 作用:
    从远程仓库中的代码拉到本地工作区上。与clone不同的是,pull指的是本地有repository时,将远程仓库中的最新的commit内容下载到本地,并合并到当前分支

  • 示例:
    我们把clone的内容全部删掉,并使用git init进行初始化。
    在这里插入图片描述
    然后通过git pull来下载远程仓库中最新的commit数据,如下图:
    在这里插入图片描述
    在这里插入图片描述

4.7 git checkout -b [本地分支] [远程分支]

  • 作用:
    创建本地分支,并合并远程分支到本地。

  • 示例:
    在这里插入图片描述

5. git的标签管理

5.1 git tag [tagName] [commitID]

  • 作用:
    给最新提交commitID进行一个重命名,方便管理。

  • 示例:
    在这里插入图片描述

5.2 git show [tagName]

  • 作用:
    查看标签的文字说明。

  • 示例:
    在这里插入图片描述

5.3 git tag -d [tagName]

  • 作用:
    删除标签
    创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

  • 示例:
    在这里插入图片描述

5.4 git push origin [tagName]

  • 作用:
    推送某个标签到远程仓库中。

git push origin --tags
一次性推送全部尚未推送到远程的本地标签

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d remove
然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/remove

  • 示例:
    在这里插入图片描述
    在这里插入图片描述
    此时远程仓库中就存在了新的tag,如下图所示:
    在这里插入图片描述
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉堃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值