美文网首页
(1) git初识

(1) git初识

作者: Wei_Lai | 来源:发表于2018-11-05 19:00 被阅读0次

小结

  1. 初始化一个Git仓库,使用git init命令。

  2. 添加文件到Git仓库,分两步:

使用命令git add <file>,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>,完成。

  1. 要随时掌握工作区的状态,使用git status命令。

  2. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

  3. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

  4. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  5. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

正文

参照廖雪峰的git教程学习,感谢廖雪峰老师的教程。
教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git是分布式版本控制系统之一,直接在官网上下载安装

进入目录 比如d/WeiLai/Onedrive/study/git,然后git bash here,输入pwd显示当前目录。

输入 git init命令把这个目录变成Git可以管理的仓库
提示Initialized empty Git repository in D:/WeiLai/OneDrive/study/git/.git/
当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的
这个目录默认是隐藏的,用ls -ah命令就可以看见

目录中新建一个文件 readme.md ,内容如下:

Git is a version control system.
Git is free software.

git add readme.md 用git add把文件添加到仓库
git commit -m "wrote a readme file"用命令git commit把文件提交到仓库("wrote a readme file"本次提交的说明)

为什么Git添加文件需要add,commit一共两步呢?
因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."

对readme.md进行修改如下:

Git is a distributed version control system.
Git is free software.

修改readme.md后,输入git status命令可以让我们时刻掌握仓库当前的状态。(可以查看到readme.md被修改但未提交。)

使用 git diff命令查看具体修改内容,git diff readme.md

查看完后(同前面),可通过git add(添加) ,git status(查看当前状态),git committ(提交)。

再次对readme.md进行如下修改:

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后尝试提交:

$ git add readme.md
$ git commit -m "append GPL"
[master 1094adb] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)
readme.md文件一共有3个版本被提交到Git仓库里了:

版本1:wrote a readme file

Git is a version control system.
Git is free software.

版本2:add distributed

Git is a distributed version control system.
Git is free software.

版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.

也用git log命令查看历史记录(git log命令显示从最近到最远的提交日志)

imwl@DESKTOP-V2KTJSJ MINGW64 /d/WeiLai/Onedrive/study/git (master)
$ git log
commit d730a1998de2ac8a90b24482563756eb9b400b88 (HEAD -> master)
Author: itswl <imwl@live.com>
Date:   Mon Nov 5 19:14:32 2018 +0800

    append GPL

commit 8fd1e66ce9631da4fea19205b4f737abcb81f059
Author: itswl <imwl@live.com>
Date:   Mon Nov 5 18:47:48 2018 +0800

    add distributed

commit 123e3165aafcea2a49c050beba5f9d2b0099a2ea
Author: itswl <imwl@live.com>
Date:   Mon Nov 5 18:29:10 2018 +0800

    wrote a readme file

使用git log --pretty=oneline只显示commit id 和提交说明

imwl@DESKTOP-V2KTJSJ MINGW64 /d/WeiLai/Onedrive/study/git (master)
$ git log --pretty=oneline
d730a1998de2ac8a90b24482563756eb9b400b88 (HEAD -> master) append GPL
8fd1e66ce9631da4fea19205b4f737abcb81f059 add distributed
123e3165aafcea2a49c050beba5f9d2b0099a2ea wrote a readme file

在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

当前版本append GPL回退到上一个版本add distributed,可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at 8fd1e66 add distributed

readme.md已被还原成第2个版本

$ cat readme.md
Git is a distributed version control system.
Git is free software.

git log再看看现在版本库的状态

commit 8fd1e66ce9631da4fea19205b4f737abcb81f059 (HEAD -> master)
Author: itswl <imwl@live.com>
Date:   Mon Nov 5 18:47:48 2018 +0800

    add distributed

commit 123e3165aafcea2a49c050beba5f9d2b0099a2ea
Author: itswl <imwl@live.com>
Date:   Mon Nov 5 18:29:10 2018 +0800

    wrote a readme file

第3个版本已经没有了,找到那个append GPL的commit id是d730a...,于是就可以指定回到未来的某个版本:

$ git reset --hard d730a
HEAD is now at d730a19 append GPL 

版本号不用写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

再查看readme.md的内容:

$ cat readme.md
Git is a distributed version control system.
Git is free software distributed under the GPL

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

git-head

改为指向add distributed

git-head-move

然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

当你用git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPLcommit id。Git提供了一个命令git reflog用来记录你的每一次命令:

imwl@DESKTOP-V2KTJSJ MINGW64 /d/WeiLai/Onedrive/study/git (master)
$ git reflog
d730a19 (HEAD -> master) HEAD@{0}: reset: moving to d730a
8fd1e66 HEAD@{1}: reset: moving to HEAD^
d730a19 (HEAD -> master) HEAD@{2}: commit: append GPL
8fd1e66 HEAD@{3}: commit: add distributed
123e316 HEAD@{4}: commit (initial): wrote a readme file

相关文章

  • (1) git初识

    小结 初始化一个Git仓库,使用git init命令。 添加文件到Git仓库,分两步: 使用命令git add <...

  • Github教程

    原文http://www.eoeandroid.com/thread-274556-1-1.html 【初识Git...

  • git

    初识git--步骤截图

  • Git 系列文章

    GIT 初识 Git的基础操作 Git的远程操作 Git的分支管理 Git标签操作 Git团队协作 Git 多账户...

  • git命令上

    第2节:git命令 git初识配置 检验git安装是否成功:git bash中运行 git --version验证...

  • GIT和Github

    #Git的初识 ##Git 的使用 Git 使用初尝试 新建项目来操作 克隆已有项目来操作 Git 的使用 by ...

  • # 初识git

    安装教程 可以从Git官网直接下载,网速慢的可以获取网盘资源,然后按默认选项安装即可。安装完成后,在开始菜单里找到...

  • 初识git

    git status 查看当前状态 stage区域的 增,改:git add 删:git rm --cached ...

  • 初识git

    --mkdir learngit 创建learngit文件夹 --进入新建的文件夹 --git init把这个目录...

  • 初识git

    一、版本管理 版本管理,是用来记录一个或若干文件内容变化,以便将来查询特定版本修证情况的系统。 版本管理工具的发展...

网友评论

      本文标题:(1) git初识

      本文链接:https://www.haomeiwen.com/subject/yuqexqtx.html