要么改变世界,要么适应世界

Git学习笔记之Git基本操作

2022-02-08 19:57:15
53
目录

书接上回,本文主要介绍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 clonegit pushgit addgit commitgit checkoutgit 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 .是将当前文件夹下的修改都加 到暂存区。

历史评论
开始评论