Git 命令整理

1 篇文章 0 订阅

此篇文章是git使用学习过程中的简单整理,仅代表自己的理解,如果文中有不足或错误的地方,欢迎留言指正!

git简介

Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Linus花了两周时间自己用C写了一个分布式版本控制系统,也就是Git的雏形。至于Linus为什么写这个Git(分布式版本控制系统),也是十分有趣的,在此就不在介绍了。
本篇文章主要整理一些git常用命令,原理先不进行详解。

Git安装

Git在Linux、Unix、Mac和Windows这几大平台都可以正常运行。
在此仅介绍Windows上安装Git

  • Git官网下载地址:https://git-scm.com/downloads
  • 下载安装程序之后,按默认选项安装即可。
  • 安装完成之后,右键->git bash here,弹出类命令行窗口,即安装成功。
  • 配置名字和Email地址。
    git config --global user.name "your name"
    git config --global user,email "your-email@suffix.com"
    
    --global参数,全局定义,会让这台机器上所有的Git仓库都使用这个配置。

创建版本库(repository)

git init

  • 新建一个文件夹 gitdir/

  • 执行初始化,新建仓库

    $ git init
    
    Initialized empty Git repository in D:/Git/gitrepo/.git/
    
  • gitdir 文件夹下多出一个.git的隐藏目录,用于Git进行跟踪管理版本库。

  • gitdir下新建 readme.txt 文件,添加任意内容。

git status

  • git status查看当前版本改动。
    $ git status
    On branch master
    
    No commits yet
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            readme.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    

git diff

  • git diff 查看文件详细修改,默认返回所有文件的修改。
  • git diff readme.txt 查看指定文件的修改。
    在这里插入图片描述
    - 为删除,+为新增

git add

  • 执行git add <file>
    $ git add readme.txt
    
    git add 会将文件放在stages(暂存区),可以多次执行该命令,将多个文件放入stages中。
    add 后可指定多个文件同时提交,用空格隔开。
    也可以使用git add .,提交工作区所有文件。

git commit

  • 执行 git commit -m <message>

     $ git commit -m "add readme"
     [master (root-commit) 5bf6e8b] add readme
      1 file changed, 2 insertions(+)
      create mode 100644 readme.txt
    

    git commit 会将stages中的文件提交到repository(仓库)-m是本次提交的说明,即注释。

版本管理

  • 对Git的版本回退、工作区和暂存区、管理修改、撤销修改、删除文件进行简单介绍。

工作区(Working Directory)和暂存区(stage)

介绍

  • 工作区(Working Directory):电脑里可以看到的目录,即前文创建的gitdir文件夹。
  • 版本库(Repository): 即前文的.git目录
  • 暂存区(stage): 也叫index,如下图所示

![(https://img-blog.csdnimg.cn/80b1e179959c4da8907de84399533b03.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Zu25ZCm,size_20,color_FFFFFF,t_70,g_se,x_16)

版本回退

git log

  • git log 查看版本库状态
    $ git log
    commit 5bf6e8b9962e3cc7ab4a58f5621ed686bb8dbb66 (HEAD -> master)
    Author: zzh <810040775@qq.com>
    Date:   Tue Nov 16 20:15:13 2021 +0800
    
        add readme
    
    git log 美化输出-2 显示两条,–oneline 一条commit简化显示为一行。
    $ git log -2 --oneline
    32e037b (HEAD -> master) tmp
    5bf6e8b add readme
    

git reset

git reset 分两种情况解释

  1. 回退指定版本commit
  2. 撤销add操作
回退指定版本commit
  1. 撤销add操作
    git reset 有3种回退方式:

  2. git reset –mixed <commit id> : 默认方式,回退到指定的commit版本,commit中的源码恢复到工作区,全都处于未add的状态

  3. git reset –soft <commit id> : 回退到指定的commit版本,源码处于暂存区中(已add的状态),此时可以直接commit;

    上面两种情况,都会保留工作区和暂存区修改未提交的代码。

  4. git reset –hard <commit id> : 彻底回退到指定的commit版本,工作区和暂存区的修改会全部丢弃慎用!

  • 下面举例是工作区和暂存区都没有修改的情况,即都为空!

    $ git status
    On branch master
    nothing to commit, working tree clean
    
  • git reset --hard <commit id> 彻底回到指定的某个版本,commit id是使用SHA1计算出来并使用十六进制表示的数字。

    $ git reset --hard 5bf6e8b9
    HEAD is now at 5bf6e8b add readme
    
  • git reset --hard HEAD^回到上个版本,HEAD是指当前版本,HEAD^上个版本,HEAD^^上上个版本,HEAD~100往上100个版本。

    $ git reset --hard HEAD^
    HEAD is now at 5bf6e8b add readme
    
  • 版本回退之后,如果想恢复到新版本,可以执行git reflog,它将记录你的每一次命令。

    $ git reflog
    5bf6e8b (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
    8aedafd HEAD@{1}: commit: add git reset
    5bf6e8b (HEAD -> master) HEAD@{2}: reset: moving to 5bf6e8b9
    5bf6e8b (HEAD -> master) HEAD@{3}: commit (initial): add readme
    
  • HEAD指向的版本就是当前版本。
    至此,使用git resetgit loggit reflog可以在任意版本之间反复穿梭
    注:
    git是基于commit的!!!
    git是基于commit的!!!
    git是基于commit的!!!
    因此commit之后的修改,是不会被保存的,当然,git也考虑到这一点,所以有git stash,可以将changes放入缓存中,使用git stash pop/apply <stash @{n}>进行恢复,后面会专门介绍该指令。

撤销add操作

执行git add .后,想撤销add中的一个或多个文件,可以使用git reset HEAD <file>
在这里插入图片描述
git reset HEAD 默认撤销暂存区所有文件,恢复到工作区,指定文件名,则仅撤销指定文件。
支持同时撤销多个文件:
git reset HEAD <file1> <file2>...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值