Git-基本操作

Posted colahua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git-基本操作相关的知识,希望对你有一定的参考价值。

Git

基本概念

  • 工作区:电脑里看到的目录,如myrepo文件夹
  • 暂存区:add后commit前的存储区域
  • master:commit以后的存储区域
  • 版本库:暂存区与master的并集

创建版本库

创建git仓库

$ mkdir myrepo//创建文件夹
$ cd myrepo//进入文件夹
$ pwd//显示当前目录
/c/Users/11546/Desktop/myrepo

$ git init//创建Git仓库
Initialized empty Git repository in C:/Users/11546/Desktop/myrepo/.git/
  • .git目录默认隐藏,可用ls-ah命令看见

把文件添加到版本库

编写一个泊船瓜洲.txt文件,内容如下:

《泊船瓜洲》
京口瓜洲一水间,钟山只隔数重山。
春风又到江南岸,明月何时照我还。

把文件添加到Git仓库

$ git add 泊船瓜洲.txt//把文件添加到暂存区

$ git commit -m 新建文件,包含"春风又到江南岸"
[master (root-commit) 1fa6029] 新建文件,包含“春风又到江南岸”
 1 file changed, 3 insertions(+)
 create mode 100644 "346263212350210271347223234346264262.txt"
  • 可以add多次再统一commit

修改文件

把泊船瓜洲.txt文件更改如下:

《泊船瓜洲》
京口瓜洲一水间,钟山只隔数重山。
春风又满江南岸,明月何时照我还。

运行git status查看状态:技术图片

  • git status可知有无需要commit的文件

运行git diff查看修改内容:

技术图片

再将修改add与commit

$ git add 泊船瓜洲.txt

$ git commit -m 把“到”改为“满”
[master e7e5a3f] 把“到”改为“满”
 1 file changed, 1 insertion(+), 1 deletion(-)
 
$ git status
On branch master
nothing to commit, working tree clean

时间穿梭

版本回退

再将泊船瓜洲.txt改为:

《泊船瓜洲》
京口瓜洲一水间,钟山只隔数重山。
春风又绿江南岸,明月何时照我还。

将上述修改add并commit

使用git log命令查看记录

$ git log
commit 05fc749e076386a404963258b9a61bdb724fa48c (HEAD -> master)
Author: jkq <1154609706@qq.com>
Date:   Mon Mar 9 17:21:23 2020 +0800

    把“满”改为“绿”

commit e7e5a3fd383391a777d7b964f3ce74a50e01ec2b
Author: jkq <1154609706@qq.com>
Date:   Mon Mar 9 17:00:39 2020 +0800

    把“到”改为“满”

commit 1fa6029ec6f9557e83fe0f63dbeece9b04def210
Author: jkq <1154609706@qq.com>
Date:   Mon Mar 9 16:00:35 2020 +0800

    新建文件,包含“春风又到江南岸”
  • 若想一次修改显示在一行,则使用$ git log --pretty=oneline命令

回到上一个版本

整个仓库
$ git reset --hard HEAD~1
HEAD is now at e7e5a3f 把“到”改为“满”

$ git log
commit e7e5a3fd383391a777d7b964f3ce74a50e01ec2b (HEAD -> master)
Author: jkq <1154609706@qq.com>
Date:   Mon Mar 9 17:00:39 2020 +0800

    把“到”改为“满”

commit 1fa6029ec6f9557e83fe0f63dbeece9b04def210
Author: jkq <1154609706@qq.com>
Date:   Mon Mar 9 16:00:35 2020 +0800

    新建文件,包含“春风又到江南岸”
  • HEAD~1表示上一个版本
单个文件
$ git checkout HEAD~1 -- 泊船瓜洲.txt

后悔回到上一个版本,想去未来版本(想去任何版本都通用)

找到想去到版本的commit id

  1. 若未关闭git bash,则直接往上找commit id

  2. 若已关闭git bash,则使用git reflog命令查看commit id

    $ git reflog
    e7e5a3f (HEAD -> master) HEAD@{0}: reset: moving to HEAD~1
    05fc749 HEAD@{1}: commit: 把“满”改为“绿”
    e7e5a3f (HEAD -> master) HEAD@{2}: commit: 把“到”改为“满”
    1fa6029 HEAD@{3}: commit (initial): 新建文件,包含“春风又到江南岸”

撤销修改

将泊船瓜洲.txt改为:

《泊船瓜洲》
京口瓜洲一水间,钟山只隔数重山。
春风又满江南岸,明月何时照我还。
不开心
  1. 文件修改后还未放到暂存区,撤销修改回到跟版本库一样的状态(上一次commit)

    $ git checkout -- 泊船瓜洲.txt
    
    $ cat 泊船瓜洲.txt
    《泊船瓜洲》
    京口瓜洲一水间,钟山只隔数重山。
    春风又满江南岸,明月何时照我还。
  2. 文件add到暂存区后又做了修改,撤销修改回到add到暂存区后状态

    ? (1)先使得暂存区变干净,工作区有修改:

    $ git reset HEAD 泊船瓜洲.txt
    Unstaged changes after reset:
    M       泊船瓜洲.txt

    技术图片

    • HEAD表示当前版本

    ? (2)再将工作区的修改用git checkout -- 泊船瓜洲.txt命令清除

删除文件

从文件管理器中删除泊船瓜洲.txt

$ rm 泊船瓜洲.txt

技术图片

  1. 误删

    $ git checkout -- 泊船瓜洲.txt
    • 实质是用版本库里的版本替换工作区里的版本
  2. 确实要从版本库中删除

    $ git rm 泊船瓜洲.txt
    rm '泊船瓜洲.txt'
    
    $ git commit -m 删除泊船瓜洲.txt
    [master 99387e8] 删除泊船瓜洲.txt
     1 file changed, 3 deletions(-)
     delete mode 100644 "346263212350210271347223234346264262.txt"

以上是关于Git-基本操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

markdown 一堆Git的基本片段

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段