Git学习笔记之Git基本操作
书接上回,本文主要介绍Git
的简单日常操作。
创建本地仓库
在此之前,我们先配置以下我们的账户信息:
$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"
这是因为Git
是一个分布式版本控制软件,每次的提交都需要记下提交者的信息。
--global
意思是配置的是全局用户,这样子我们就不需要每个仓库都配置用户信息了。
例如我的信息:
git config --global user.name "YaleXin"
git config --global user.email "495592364@qq.com"
然后我们首先需要一个本地仓库,在电脑合适处新建个文件夹,例如demoRepository
,然后进入该文件夹,右键鼠标打开Git Bash
,输入
git init
然后该目录下就会生成一个以.git
的隐藏文件夹,就代表着我们的本地仓库创建好了。
常用命令
Git
常用的是以下 6 个命令:git clone
、git push
、git add
、git commit
、git checkout
、git pull
这几个命令作用如下图所示
名词解释
workspace
:工作区staging area
:暂存区/缓存区local repository
:版本库或本地仓库remote repository
:远程仓库
暂存区工作区后面我们会更加详细介绍
将文件加到仓库中
在我们的demoRepository
文件夹下新建一个README.md
文件(实际上如果你要使用Git
管理我们的文件,则需要将文件放在仓库的目录下),然后在里边写入一些内容:
V1: This is a file!
然后将该修改放到暂存区,即
git add README.md
执行上面的命令,没有任何显示
然后使用commit
命令将其加至仓库中
E:\MyBlog\demoRepository>git commit -m "first commit"
[master (root-commit) bbe2a77] first commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
-m
参数是加入本次提交的说明备注,最好是带有一定目的性,否则后面很多提交后你就忘记本次提交的目的了。
上面的回显表明有一个文件有改动,有一行插入。
其他一些常用命令大全
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
git init | 初始化本地仓库 | git clone | 克隆仓库,即将远端仓库下载到本地 |
git status | 查看仓库当前的状态 | git diff | 比较暂存区和工作区的差异。 |
git add | 添加文件到暂存区 | git commit | 提交暂存区到本地仓库 |
git reset | 回退版本 | git rm | 删除工作区文件 |
git mv | 移动或重命名工作区文件 | git log | 查看历史提交记录 |
git blame | 以列表形式查看指定文件的历史修改记录 | git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 | git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
版本控制
上面是一个将文件加入到仓库中简单的步骤,下面我们进行更加详细的步骤
我们再在README.md
文件中加入新内容(增加一行):
V2:This is the second write
输入命令git staatus
查看当前仓库状态
E:\MyBlog\demoRepository>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.md
no changes added to commit (use "git add" and/or "git commit -a")
大概意思是说有个文件修改过了。当然我们也可以使用diff
命令查看
E:\MyBlog\demoRepository>git diff README.md
diff --git a/README.md b/README.md
index 28b620b..48f320f 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
-V1: This is a file!
\ No newline at end of file
+V1: This is a file!
+
+V2:This is the second write
\ No newline at end of file
该命令可以更加清晰地知道改动了哪里。
然后我们将它们加到仓库中。
E:\MyBlog\demoRepository>git add .
E:\MyBlog\demoRepository>git commit -m "second commit"
[master e54198e] second commit
1 file changed, 3 insertions(+), 1 deletion(-)
E:\MyBlog\demoRepository>git status
On branch master
nothing to commit, working tree clean
切换到指定版本
我突然发现,我的文件里边写错了个单词write
,应该是writing
,当然你可以直接从文件下手,直接修改源文件,可是现在是一个文件,当然知道要怎么改,有的时候我们可能需要的是返回到上一次副本状态,即我们的V1
版本,则该如何?
我们可以借助git log
命令查看提交记录:
E:\MyBlog\demoRepository>git log
commit e54198ebb4e69baf5ea92eb75546b1dede044c52 (HEAD -> master)
Author: YaleXin <495592364@qq.com>
Date: Tue Feb 8 20:07:55 2022 +0800
second commit
commit bbe2a77f4df4b447e42b53c81f02eb2e07c8c774
Author: YaleXin <495592364@qq.com>
Date: Tue Feb 8 18:20:39 2022 +0800
first commit
可以看到每一次的commit
都对应一个哈希值。我们还发现最新的版本旁边还加了一个HEAD
,表明这个是当前版本,上一个版本是 HEAD^
,上上个版本是HEAD^^
,往上91个版本呢,总不可能91个^
吧,Git
早就为你想好啦!用HEAD~91
即可。
我们使用reset
命令即可实现去到某个版本
$ git reset --hard HEAD^
HEAD is now at bbe2a77 first commit
现在打开我们的README.md
文件,文件内容果然变成了之前的版本,理论上说,只要我们记得每一次commit
对应的哈希值,我们就可以在任意版本之间转换,例如,我们之前第二次的版本是 second commit
,对应的哈希值是e54198ebb4e69baf5ea92eb75546b1dede044c52
不过需要注意的是,版本回退以后,比当前版本“新”的提交记录是无法看得到的,即此时如果使用
git log
命令时我们会发现只有第一次的提交记录了
我们继续使用reset
命令进行版本切换,例如切换到第二次提交状态:
$ git reset --hard e54198ebb4e69baf5ea92eb75546b1dede044c52
HEAD is now at e54198e second commit
现在打开我们的README.md
文件,文件内容果然变回了两行内容。
我突然发现我想回退版本不就是为了改单词吗,可是怎么又跳回来了??算了算了,直接修改文件吧,又不是不能!
将第二行改成:
V3:This is the third writing
顺便把修改后的文件加到仓库中
git add .
git commit -m "3"
add .
是将当前文件夹下的修改都加 到暂存区。
本文由「黄阿信」创作,创作不易,请多支持。
如果您觉得本文写得不错,那就点一下「赞赏」请我喝杯咖啡~
商业转载请联系作者获得授权,非商业转载请附上原文出处及本链接。
关注公众号,获取最新动态!