Git - 学会这几个本地命令够你浪上好几天

Git 基本操作(本地库)

head

  很多小伙伴可能都听说过 Git,那么 Git 到底是什么? 为什么那么多人都在使用它?
  Git 是一个开源的分布式版本控制系统,用于敏捷、高效地处理任何大中小项目,特别是对于团队协作开发起到了积极有效的推进作用。
通俗地讲,Git 就像我们玩 RPG 游戏时的存档系统,它可以随时保存你的游戏进度。一旦我们失败或者想重温剧情,就可以读取某个存档重新开始。
  接下来,我将分为两篇文章分别介绍 Git 本地库管理和远程库操作等内容,相信很快你就会喜欢上 Git!

一、准备

  • 安装 Git,这里是官方下载地址

  • 远程基本操作请看【Git - 学会这几个远程命令够你浪上好几年】。

  • 创建本地库文件夹,用来保存你的项目文件。然后在库文件夹中鼠标右键选择 Open Git Bash here,在当前位置运行 Git,自动打开命令行窗口:

    Bash here
    你的命令行可能与这里的不同,没关系,因为我们的目录结构本就不同。接下来我们开始使用 Git 命令完成本地库的基本操作。

    注意,以下操作请在上面窗口中执行(支持 Linux 命令)。

二、操作流程

  1. 开始操作以前,我们先设置一下用户基本信息:

    git config --global user.name "your name"
    git config --global user.email "your email"

    每一次提交时,Git 都要收集和保存提交者的基本信息,包括用户名和邮箱地址。 我们通过以下两个命令进行设置:

    user.nameuser.email

    也可以通过修改 C:\Users\用户名\.gitconfig 文件来设置:

    .gitconfig

  2. git init

    这个命令用来初始化你的本地库:

    init Git 提示,在当前目录下初始化了一个空的 Git 库。从现在开始 Git 开始接管你的本地库,全程跟踪本地库中所有文件的创建、修改和删除等状态。

    如果你够仔细,会发现命令行末端多出了一个 .git 文件夹。这个文件夹是由 Git 自动创建的隐藏文件(Linux 中以 “.” 开始的都是隐藏文件),保存着版本库相关的文件。

    我们来看看这个文件夹:

    ls .git
    注意,不要轻易改动或删除 .git 文件夹中的所有文件!

    想要了解更多参数,可以查看【init 命令


  1. git status

    这个命令用于查看文件的各种状态。作为演示,我们新建一个 readme.txt 文件,向其中写入一些内容:
    readme.txt
    我们使用 status 命令查看 Git 对这个新建文件的反应:
    status
    Git 在未跟踪文件中列出了 readme.txt 文件,并且以红色标识,很醒目地提示我们该文件尚未跟踪。最后那行提示我们如何把未跟踪文件添加到暂存区。

    想要了解更多参数,可以查看【status 命令

  1. git add[-A / file name]

    这个命令将未跟踪文件添加到暂存区。我们试着添加 readme.txt:
    add
    执行命令后没有任何提示,说明文件添加成功。 输入 status 命令查看一下:
    status
    Git 状态改变了,readme.txt 文件变成绿色,表示可提交了。同时 Git 还提示我们如何撤回刚才添加的文件。

    常用命令参数说明:

    -A     - 表示添加本地库中所有未跟踪文件;
    file name - 表示添加指定文件,可以一次性指定多个文件并用空格分开。

    想要了解更多参数,可以查看【add 命令

  1. git commit -m"message"

    这个命令的作用是把暂存区的文件提交到版本库。通过前面的操作,我们已经把 readme.txt 文件添加到了暂存区。接下来,我们把它提交到版本库:
    commit
    简单解释一下 “message” 参数,它可以是任何内容,建议输入本次提交的简短说明,方便在提交记录中快速定位。

    执行结果:

    1 file changed - 表示一个文件状态发生变化(提交了 readme.txt 文件);
    1 insertion(+) - 表示插入了一行内容(readme.txt 中新写入了一行)。

    想要了解更多参数,可以查看【commit 命令

  1. git log

    通过上面的一系列操作,我们成功地把一个新建文件提交到了版本库,提交记录也被完整保存下来。现在使用 log 命令查看我们刚才的提交记录:
    log
    看到那长长的数字串了吗?其实那是每次提交的 hash 码,一组很大的十六进制数。你可以把它当做一组序列号或者 id,它是唯一的,就是为了区分其它的提交。

    HEAD -> master - 表示 HEAD(版本指针)指向当前提交版本。

    想要了解更多参数,可以查看【log 命令

  1. git diff

    接下来我们继续修改 readme.txt 文件,再输入一行新的内容:
    cat readme
    文件内容被修改,我们使用 status 命令查看一下:
    status
    完美!看到那行红色文字了吗? Git 准确的检测到文件的变化,提醒我们 readme.txt 文件被改动了,但还没有添加到暂存区。Git 还贴心地告诉我们,可以使用 add 命令把修改内容添加到暂存区,或者使用 restore 命令放弃本次修改。

    如果不是你本人操作,或者是修改的时间太久了,你可能也忘记文件到底改动了什么。没关系,我们使用 diff 命令与上次提交的内容对比,马上一目了然:
    diff
    diff 命令不带参数时 Git 默认对比最近的一次提交。从执行结果可以看出,“b” 文件新增了一行内容(带 “+” 号),就是 “Provides both …” 那行内容。

    好的,检查完修改内容,我们再次提交:
    add
    commit
    提交完成,查看当前状态:
    status
    Git 通知我们,整个工作区已经整理干净,无需提交任何文件。这一刻,有没有感觉心里瞬间通畅无比?

    想要了解更多参数,可以查看【diff 命令

  1. git reset

    当你看到这个命令时,可能猜到它是做什么的了。是的,它能把当前提交状态恢复到任何一次的状态。换句话说,可以升级或降级到任何版本。

    目前为止,readme.txt 文件已经被提交了两次。为了方便演示 reset 命令,现在使用前面学过的命令,对 readme.txt 文件再次修改,形成多次提交记录:
    modified
    add
    commit
    reflog
    现在我们已经有了三次提交记录:
  • 版本一:wrote a readme file
  • 版本二:Added the ‘Provides both …’ line
  • 版本三:Added the ‘with an unusually rich …’ line

    接下来,我们使用 reset 命令把 readme.txt 文件恢复到第一次提交的时刻:

    reset
    Git 提醒我们 HEAD 现在指向了 “5356e79”。这串数字从哪来的呢?它就是我们每次提交的 id 号的前七位(还记得吗?那长长得令人恐怖的数字串)。强烈推荐你使用 reflog 命令去查看,除非你有超强的记忆力!

    好了,回归正题,赶快去看看我们的劳动成果吧:
    readme.txt
    很神奇是吧? 文件内容好像不一样了。进入库文件夹打开 readme.txt,里面的内容的确变成第一次提交时的内容。一朝回到了解放前,此时的你一定很忐忑吧。不过大可不必,你完全可以让文件恢复到应该有的样子,这种事情对于 Git 来说简直不要太简单。

    既然如此,我们试着把文件恢复到第二次提交时刻:
    reflog
    reset
    轻轻松松的, Git 瞬间就把 readme.txt 文件恢复到第二次提交时的状态。怎么样,是不是很享受这种尽在掌握的感觉?

    想要了解更多参数,可以查看【reset 命令

三、小结

上面我们使用了七个命令(reflog 归为 log 命令),熟练运用这些命令足以应对本地基本操作了。现在我们来总结一下这些命令:

  • git int 初始化本地库;

  • git status 查看本地库文件的跟踪情况;

  • git add 把文件添加到暂存区;

  • git commit 把文件提交到版本库;

  • git loggit reflog 查看提交记录;

  • git diff 查看指定版本间的差别。

  • git reset 把当前文件恢复到指定版本

    其实,大部分命令都可以附带参数,实现更精准地控制。如果想要更进一步了解参数的具体作用,请使用 git --help 命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值