• Git学习笔记(一)


    本系列学习笔记参考廖雪峰老师的Git教程,地址:https://www.liaoxuefeng.com/wiki/896043488029600

     

    Git学习笔记(一) https://www.cnblogs.com/littlemonsterksn/p/13562632.html

    Git学习笔记(二) https://www.cnblogs.com/littlemonsterksn/p/13583004.html

    Git学习笔记(三) https://www.cnblogs.com/littlemonsterksn/p/13583197.html

    Git学习笔记(四) https://www.cnblogs.com/littlemonsterksn/p/13593841.html

    Git学习笔记(五) https://www.cnblogs.com/littlemonsterksn/p/13598243.html

    一、在Windows上安装Git

    1. 在官网下载Git

    https://git-scm.com/downloads

    2. 安装好后,查询Git版本

    3. 设置名字和邮箱

    $ git config --global user.name "Jessiegit"
    $ git config --global user.email "xxxxx @gmail.com"

    二、创建一个版本库

    1. 选择一个合适的地方,创建一个空目录。本文在G盘

    $ mkdir learngit
    $ cd learngit/
    $ pwd

    2. 通过git init把这个目录变成Git可以管理的仓库,也就是初始化仓库

    初始化完成后可以发现当前目录下多了一个.git目录(一般不要手动修改里面的文件)。这个目录默认是隐藏的,用ls -ah可以看到

    $ git init
    $ ls -ah

    3. 编写一个readme.txt文件

    内容如下:

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

    把该文件放到learngit目录下

    4. 用git add,把文件添加到仓库

    $ git add readme.txt

    用git commit,把文件提交到仓库:

    $ git commit -m "wrote a readme file"

    git commit命令,-m后面输入的是本次提交的说明,最好是有意义的内容

    git commit命令执行成功后显示:

    1 file changed:1个文件被改动(新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)

    三、修改文件并查看状态

    1. 修改readme.txt文件

    改成如下内容:

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

     用git status命令看看结果:

    $ git status

    git status可以查看仓库当前的状态,上面的命令输出表示:readme.txt被修改过了,但还没有准备提交的修改

    用git diff这个命令,可以查看具体修改了什么内容

    $ git diff

    2. 提交修改和提交新文件

    和之前是一样的两步,第一步是git add:

    $ git add readme.txt

    在执行第二步git commit之前,再运行git status查看当前仓库的状态:

    $ git commit -m "add distributed"

    提交后,再用git status查看仓库的当前状态:

     Git显示当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的

    四、版本回退

    1. 修改readme.txt文件

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

    然后提交:

    $ git add readme.txt
    $ git commit -m "append GPL"

    用git log命令查看历史记录:

    如果觉得输出信息太多,看得眼花缭乱,可以加上--pretty=oneline参数:

    $ git log --pretty=oneline

    2. 回退到上一个版本

    上一个版本就是HEAD^,上上一个版本就是HEAD^^

    往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

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

    $ git reset --hard HEAD^

    3. 回退到指定版本

    用git log查看现在版本库的状态,找到append GPL的commit id,就可以指定回到某个版本

    再查看readme.txt的内容:

    $ git reset --hard 79690e
    $ cat readme.txt

     4. 恢复到新版本

    若回退到了某个版本,又想恢复到新版本,但找不到新版本的commit id,

    可以使用git reflog,它记录每一次命令:

    $ git reflog

    append GPL的commit id是79690e5,现在,就又可以恢复到新版本了

    $ git reset --hard 79690e
    $ cat readme.txt

    小结:

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

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

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

    五、工作区和暂存区

    从前面学习的内容可知,把文件往Git版本库里添加的时候,是分两步执行的:

    第一步:用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

    第二步:用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    因为创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改

    可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改

    Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
    工作区>>>>暂存区>>>>仓库
    
    git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
    git diff查看工作区和暂存区差异,
    git diff --cached查看暂存区和仓库差异,
    git diff HEAD 查看工作区和仓库的差异,
    git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
    git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。
    git status就是单纯看工作区情况

    1. 先对readme.txt修改,再添加LICENSE文件

    2. 用git status查看状态,并添加readme.txt和LICENSE

    Git显示readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked

    现在,使用git add,把readme.txt和LICENSE都添加后,用git status再查看一下:

    所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支

    一旦提交后,如果又没有对工作区做任何修改,那么工作区就是“干净”的

    ------

    又到了2020年,今天是七夕节,天气很好。节日快乐~!(◕‿◕✿)

  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/littlemonsterksn/p/13562632.html
Copyright © 2020-2023  润新知