Git学习记录02

目录

[toc]

chapter(二)

2.1 插:如何更改当前Git用户名和邮箱?

使用git config --global --list可以查看当前账户和邮箱 再使用:

git config --global user.name "username"
git config --global user.email "@email"

2.2 继续Git,使用git status 查看状态

toto@pc:~/code/testGit$ git status
On branch master
nothing to commit, working tree clean

可以发现似乎没什么值得看的信息。

然后vim helloword.cpp,增加一句话std::cout << "test git status" << std::endl;

#include<iostream>
int main()
{
        std::cout << "This is a program that test Git!" << std::endl;
        std::cout << "test git status" << std::endl;
        return 0;
}

:wq -保存退出

再输入: git status

toto@pc:~/code/testGit$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   helloword.cpp

no changes added to commit (use "git add" and/or "git commit -a")
toto@pc:~/code/testGit$

可以看到:git的提示和之前的提示完全不同了。 上面的命令的意思是:helloword.cpp被修改过了,但还没有准备提交的修改


2.3 如何看到底修改了什么?

上面的git status只能看到是哪个文件被改了。 但是,这个文档什么被改了呢? 嗯!有的,可以使用git diff命令

toto@pc:~/code/testGit$ git diff
diff --git a/helloword.cpp b/helloword.cpp
index 4894911..d342859 100644
--- a/helloword.cpp
+++ b/helloword.cpp
@@ -3,5 +3,6 @@
 int main()
 {
        std::cout << "This is a program that test Git!" << std::endl;
+       std::cout << "test git status" << std::endl;
        return 0;
 }
toto@pc:~/code/testGit$

注意看结果:明显可以看到增加的那一行是什么。

我们在git add helloword.cpp 没反应,好结果! 我们在git commit -m "add new line that test git status

toto@pc:~/code/testGit$ git commit -m "add new line that test git status"
[master 2fe4439] add new line that test git status
 1 file changed, 1 insertion(+

git status以下:

toto@pc:~/code/testGit$ git status
On branch master
nothing to commit, working tree clean

发现结果:显示没有什么修改,工作目录是干净的!


2.4 版本管理之版本回退

现在我们已经有3个版本了,我有加了一个版本,这个版本是重复上面的步骤。 如果不断的进行修改,版本就会逐渐增加。

  1. 假设某天,你突然代码写错了!要回退到之前的版本,这时该怎么办? 先看看之前的版本:
    #include<iostream>
    int main()
    {
         std::cout << "This is a program that test Git!" << std::endl;// 版本1只有此行
         std::cout << "test git status" << std::endl; // 版本2有此行和上一行
         std::cout << "test git status2" << std::endl; // 版本3有此行和上2行
         return 0;
    }
    

  2. 只有3个版本,我们还能记住那个版本是什么?可是如果版本多!内容几千行怎么办? git 提供的命令git log,结果如下:
toto@pc:~/code/testGit$ git log
commit cd5b52f2f8f5339973092461584002f3ff984ff4 (HEAD -> master)
Author: StudyWithoutStress
Date:   Sun May 2 21:29:44 2021 +0800
    
    test git status2
    
commit 2fe44398b637c766a31b590ab73345cba89b5681
Author: StudyWithoutStress
Date:   Sun May 2 17:06:15 2021 +0800
    
    add new line that test git status
    
commit 01630fbc39a8f8719b8409ce39ad5d19e60f4497
Author: StudyWithoutStress
Date:   Sun May 2 16:07:58 2021 +0800
    
    test Git program
toto@pc:~/code/testGit$ 

可以清晰的看到,三个版本,当时git commit的注释,更改时间,作者信息,还有一个很长的码,这是commit id-版本号;这是一个16进制的数字。

注意git log的显示顺序是从最近到最远

这里只有三个版本,如果版本很多,git log一下子就乱了!可以采用参数--pretty=oneline

toto@pc:~/code/testGit$ git log --pretty=oneline
cd5b52f2f8f5339973092461584002f3ff984ff4 (HEAD -> master) test git status2
2fe44398b637c766a31b590ab73345cba89b5681 add new line that test git status
01630fbc39a8f8719b8409ce39ad5d19e60f4497 test Git program

  1. 现在我们要回退版本了!

命令git reset --hard HEAD^,HEAD^是退回上一个版本,HEAD^^是退回上上一个版本。 以此类推,但是如果是上99个版本呢? 采用命令:HEAD~99 结果:

toto@pc:~/code/testGit$ git reset --hard HEAD^
HEAD is now at 2fe4439 add new line that test git status

可以看到:已经退回到上一个版本了。 我们看看helloword.cpp是不是回退了! 果然回退了哦!


  1. 现在我有发现,我还是想要第3个版本的代码! 同样的命令,不过一定要知道第3个版本的commit id,这个可以通过shell窗口自行寻找!
toto@pc:~/code/testGit$ git reset --hard cd5b52f
HEAD is now at cd5b52f test git status2
toto@pc:~/code/testGit$ 

可以看到,果然回来了!


  1. 现在又有问题了,我把commit id忘了!怎么办? git给你想好解决方法了! 命令git reflog可以查到!
toto@pc:~/code/testGit$ git reflog
cd5b52f (HEAD -> master) HEAD@{0}: reset: moving to cd5b52f
2fe4439 HEAD@{1}: reset: moving to HEAD^
cd5b52f (HEAD -> master) HEAD@{2}: commit: test git status2
2fe4439 HEAD@{3}: commit: add new line that test git status
01630fb HEAD@{4}: commit (initial): test Git program

可以发现,commit id 的信息很清楚。


2.5 总结

  1. git config --global --list可以查看当前账户和邮箱
  2. git status 查看git 当前的状态
  3. git diff 查看文件具体改了什么
  4. git reset --hard 版本变动 指定HEAD^commit id

请我喝咖啡

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,您说多少就多少

打开支付宝或微信扫一扫,即可请我喝咖啡哦