书接上回,本文主要介绍
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 "[email protected]"
复制
然后我们首先需要一个本地仓库,在电脑合适处新建个文件夹,例如
demoRepository
,然后进入该文件夹,右键鼠标打开
Git Bash
,输入
git init
复制
然后该目录下就会生成一个以
.git
的隐藏文件夹,就代表着我们的本地仓库创建好了。
常用命令
Git
常用的是以下 6 个命令:
git clone
、
git push
、
git add
、
git commit
、
git checkout
、
git pull
这几个命令作用如下图所示
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcuQTN2UWOxcDZ4UmNzIzMhVzMlJWOjJ2MjZTZ5IGOxczMvwFNwYDO3kjNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
名词解释
-
:工作区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 <[email protected]>
Date: Tue Feb 8 20:07:55 2022 +0800
second commit
commit bbe2a77f4df4b447e42b53c81f02eb2e07c8c774
Author: YaleXin <[email protected]>
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 .
是将当前文件夹下的修改都加 到暂存区。