创建版本库
$ cd ~/Desktop/my_project
进入 桌面的 my_project 文件夹, 我们需要在这里创建一个git的仓库 初始化
$ git init
Initialized empty Git repository in C:/Users/wjscyc/Desktop/my_project/.git/
我们往里面编写一个 readme.txt文件, 内容如下
hello boys and girsl
today we will learning the git
在本地创建git仓库只需要两步
第一步 , 用命令 git add
告诉 Git, 将文件添加到仓库中
$ git add readme.txt
第二步, 用命令 git commit 告诉Git, 将文件提交到仓库
$ git commit -m"hello boys and girls"
[master (root-commit) 63b095c] hello boys and girls
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
commit可以一次提交很多文件, 所以你可以多次add 不同的文件
git status
我们已经向本地的git仓库提交了readme.txt文件, 经过一段时间, 我们发现需要修改这个文件,下面是修改的内容
hello boys and girsl, i miss you soooooo much!!!!
today we will learning the git
先别急着add commit, 我们先用看一下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")
git已经检测出来我们的readme.txt
文件已经被修改了, 建议我们使用 git add
和 git commit -a
虽然Git 告诉我们readme.txt已经被修改了, 但是向我们这样没有感情的渣男, 说出去的话马上就忘, “i miss you sooooo much” 根本没有说过, 然后Git就给我们看证据, 并狠狠的打了我们一个巴掌.
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index b4aa3bc..67c18d7 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-hello boys and girsl
+hello boys and girsl, i miss you soooooo much!!!!
today we will learning the git
\ No newline at end of file
调用了命令 git diff readme.txt
, git diff
后面跟的是文件名
ok, 板上钉钉, 真的是男人的嘴骗人的鬼, 假假假, 急急急.
好吧那就 add commit
一下吧, 就一下 蹭蹭而已]
add命令之后我们再用 git status
, 可以看到readme已经被modified
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: readme.txt
commit ,
$ git commit -m"add distributed"
[master 48b9501] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
提交后, 我们再用git status命令看看仓库的当前状态
版本回退
现在我们已经掌握了添加文件, 提交文件, 修改文件,
再对这个readme.txt
进行修改
hello boys and girsl, i miss you soooooo much!!!!
today we will learning the git. i love git very much!!!
然后尝试提交
$ git commit -m"love you guys
> "
[master 85d9cf1] love you guys
1 file changed, 1 insertion(+), 1 deletion(-)
这些commit就像是一些游戏中的存档, 一旦被boss击杀可以返回去. 一旦把文件该乱了, 或者说, 误删了文件,还可以从最近的一个commit这边恢复.
那么这些内容存放在哪里呢, 有没有类似于历史记录的东西呢, 在Git中, 我们用git log
命令查看
$ git log
commit 85d9cf1b0677a108e0afad609e19882d39797a89 (HEAD -> master)
Author: Yancheng <wjscycdsg@gmail.com>
Date: Fri Jul 21 11:22:24 2023 +0800
love you guys
commit 48b9501a575e2f46f97b62a7fe88c7fefe1366ce
Author: Yancheng <wjscycdsg@gmail.com>
Date: Fri Jul 21 11:17:57 2023 +0800
add distributed
commit 63b095c9c7345f976c6887a9fae3b67d83a782ec
Author: Yancheng <wjscycdsg@gmail.com>
Date: Fri Jul 21 10:58:02 2023 +0800
hello boys and girls
注意, 这里只会显示commit后面的内容, 那么commit的作用就显示出来了, 可以让我们更好的了解到我们之前干了什么, 做了什么.
这些内容太长了, 看的有点烦, 我们可以在命令行的后面加上--pretty=oneline
参数
那我们就需要用到一个命令git reset了
$ git log --pretty=oneline
85d9cf1b0677a108e0afad609e19882d39797a89 (HEAD -> master) love you guys
48b9501a575e2f46f97b62a7fe88c7fefe1366ce add distributed
63b095c9c7345f976c6887a9fae3b67d83a782ec hello boys and girls
看到的一大串类似 85d9cf1b0...
的是commit id
版本号,
HEAD 指向的版本就是当前的版本, git reset --hard commit_id
这些id是通过git log
和 git reflog
找到了commit对应的版本号就可以去到那个地方,
还有一种快捷的方法 git reset --hard HEAD^
HEAD^
对应着当前版本的前一个 一个^就代表着往前推进一位, 如果要后退100个版本那就写成 HEAD~100
现在我们要将当前版本 love you guys
回退到上一个版本add distributed
现在在调用 git log
$ git log
commit 48b9501a575e2f46f97b62a7fe88c7fefe1366ce (HEAD -> master)
Author: Yancheng <wjscycdsg@gmail.com>
Date: Fri Jul 21 11:17:57 2023 +0800
add distributed
commit 63b095c9c7345f976c6887a9fae3b67d83a782ec
Author: Yancheng <wjscycdsg@gmail.com>
Date: Fri Jul 21 10:58:02 2023 +0800
hello boys and girls
发现原来的 love you guys
已经不见了, 但是我们又想到回到那个地方呢? 需要知道那个地方的commit id, 85d9…
不幸的是git bash不小心被我关掉了, 这些commit id已经全部看不到了, 这时候怎么办呢? 调用git relog
!!! 拯救世界
$ git reflog
48b9501 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
85d9cf1 HEAD@{1}: reset: moving to HEAD
85d9cf1 HEAD@{2}: commit: love you guys
48b9501 (HEAD -> master) HEAD@{3}: commit: add distributed
63b095c HEAD@{4}: commit (initial): hello boys and girls
ok, 我们找到了那个地方
输入
git reset --hard 85d9
git reset --hard commit_id