Git 学习笔记(三)——基本操作

目录

一、Git状态查看

git status 命令

二、修改内容查看

命令git diff 名>

三、版本回退

命令git log

命令git log --pretty=oneline

命令git reset --hard HEAD^

命令git reset --hard 9178f(指定版本号前几位)

命令git relog

四、工作区和暂存区

五、管理修改

命令 git diff HEAD -- readme.txt(文件名)

六、撤销修改

命令 git checkout --readme.txt(文件名)

命令 git restore readme.txt(文件名)

命令 git reset HEAD readme.txt(文件名)

命令 git restore --staged readme.txt(文件名)

七、删除文件

命令 rm test.txt(文件名)

命令git rm test.txt(文件名)

命令 git checkout --test.txt(文件名)


一、Git状态查看

git status 命令

$ git status    #掌握仓库当前状态
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

时刻掌握版本库当前的状态,上面输出表示,readme.txt被修改但未提交修改。

二、修改内容查看

命令git diff <file名>

$ git diff readme.txt  #查看修改内容
diff --git a/readme.txt b/readme.txt
index d8036c1..013b5bc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
\ No newline at end of file

查看文件具体修改了什么内容。可以看出文件第一行添加了distributed单词。

查看完文件的状态,修改的内容,重复之前的命令git add 文件名 和命令git' commit 文件名将文件上传至版本库。

三、版本回退

命令git log

$ git log  #查看历史记录
commit 9178f48947263ebeb3535bb46ae14f570b3849f2 (HEAD -> master)
Author: Limi <85077****@qq.com>
Date:   Sat Mar 4 17:10:37 2023 +0800

    append GPL

commit 84cca8867e7496c3a79f82f3f4dfe77c0295b6bf
Author: Limi <85077****@qq.com>
Date:   Sat Mar 4 17:06:14 2023 +0800

    add distributed

commit bdcbe49238aaa00f07e7fc14449e96ac7812f511
Author: Limi <85077****@qq.com>
Date:   Thu Mar 2 21:21:30 2023 +0800

    wrote a readme file

显示从最近到最远的提交日志。

命令git log --pretty=oneline

$ git log --pretty=oneline
9178f48947263ebeb3535bb46ae14f570b3849f2 (HEAD -> master) append GPL
84cca8867e7496c3a79f82f3f4dfe77c0295b6bf add distributed
bdcbe49238aaa00f07e7fc14449e96ac7812f511 wrote a readme file

简化输出的日志信息,由多行变为一行。

注意:看到的一大串类似9178f..的是commit id(版本号),且版本号与我的不会相同。

命令git reset --hard HEAD^

$ git reset --hard HEAD^  #回退至上一版本
HEAD is now at 84cca88 add distributed

将当前版本回退至上一个版本。其中HEAD表示当前版本,也就是最新提交的9178f...,上一版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本,写成HEAD~100。

命令git reset --hard 9178f(指定版本号前几位)

$ git reset --hard 9178f #去往未来版本
HEAD is now at 9178f48 append GPL

在使用版本回退后,又想要回到回退前的版本,可以指定回到未来的某个版本,版本号没必要写全,前几位就可以了,Git会自动去找。

原理:Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL,改为指向add distributed,然后顺便把工作区的文件更新了。

命令git relog

$ git reflog  #记录每一次的命令
9178f48 (HEAD -> master) HEAD@{0}: reset: moving to 9178f
84cca88 HEAD@{1}: reset: moving to HEAD^
9178f48 (HEAD -> master) HEAD@{2}: commit: append GPL
84cca88 HEAD@{3}: commit: add distributed
bdcbe49 HEAD@{4}: commit (initial): wrote a readme file

记录每一次的命令,可以找到任何版本的commit id。当回退到了之前某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本时,可以说使用该命令找到某版本的版本号前几位。

四、工作区和暂存区

工作区:就是电脑里能看的的目录,例如learngit文件夹。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

版本库中含有一个stage(或者叫index)的暂存区和自动创建的分支master。

五、管理修改

命令 git diff HEAD -- readme.txt(文件名)

$ git diff HEAD -- readme.txt   #查看工作区和版本库里面的最新版本的区别
diff --git a/readme.txt b/readme.txt
index db28b2c..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
\ No newline at end of file
+Git tracks changes of files.

可以查看工作区和版本库里面最新版本的内容区别.。

六、撤销修改

命令 git checkout --readme.txt(文件名)

$ git checkout -- readme.txt #撤销还在工作区的文件修改

把文件在工作区的修改全部撤销。(对文件中内容的操作,无法对添加文件、删除文件起作用

命令 git restore readme.txt(文件名)

$ git restore readme.txt

丢弃工作区的修改(不包括对文件自身的操作,如添加文件、删除文件

命令 git reset HEAD readme.txt(文件名)

$ git reset HEAD readme.txt #暂存区的修改回退到工作区
Unstaged changes after reset:
M       readme.txt

把暂存区的修改回退到工作区,会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(相当于撤销git add 操作,不影响上一次commit后对本地文件的修改) (包括对文件的操作,如添加文件、删除文件

命令 git restore --staged readme.txt(文件名)

$ git restore --staged readme.txt

将暂存区的修改重新放回工作区(包括对文件自身的操作,如添加文件、删除文件

七、删除文件

命令 rm test.txt(文件名)

$ rm test.txt #在工作区删除文件

删除文件管理器(工作区)的文件,未删除版本库的文件,会存在工作区与版本库内容不统一。

也可以自己手动删除,结果一致。

命令git rm test.txt(文件名)

$ git rm test.txt #删除版本区文件
rm 'test.txt'


$ git commit -m "remove test.txt"  #将删除版本库文件的修改传送至分支保存
[master 53e89d7] remove test.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 test.txt

删除版本库中的文件,需要与git commit合用,将修改后的情况提交至分支保存。

命令 git checkout --test.txt(文件名)

$ git checkout -- test.txt #可以恢复工作区内误删但是版本库还有的文件

版本库里还有但工作区误删,用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

与之前的撤销修改中的命令相同,因此该命令的作用为:

丢弃工作区的修改,并用最近一次的版本库还原到当前工作区。

注意:未添加到版本库就被删除的文件无法恢复。且由于恢复到最新一版的内容,导致最新一版后修改的内容将丢失。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值