• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

为了防止个人博客无法访问,请在博客公园中保留一份副本!

请不要判定为抄袭,谢谢!我是20级的HIT学生,学号230。

随笔2

在这篇文章中,我们主要介绍:

Git起步很快。

Git 火速上手

在这个实验中,由于需要交git作业,但之前只用过少量的Git命令,所以我准备系统地重新进门。本文可视为廖雪峰Git入门课程的笔记。

一些概念

课上老师已经对Git的核心原理做了一些讲解。这里,我们先来回顾一下比较核心的概念:

CMDB当地:吸头仓库。git目录(存储所有版本控制数据的存储库)

存储库是版本库,它只是。每个目录中的git文件夹。该文件夹也称为本地CMDB,因为。git文件夹存储所有的版本控制数据。

CMDB是配置管理数据库的简称,称为配置管理数据库。不难理解为什么。git文件夹是一个配置管理数据库。

:

:提示工作目录

工作目录(本地文件系统)

除了。放进文件夹里。

:

:提示临时存储区

暂存区(内存中)

实际上,临时存储区放在。git文件夹,用于将工作目录与git存储库隔离开来。

:

对于每个文件,有三种状态:

:提示已修改

已修改(工作目录中的文件不同于git存储库中的文件,但不在临时区域中)

工作目录中与仓库中当前分支不同的文件,并且您没有将它们扔进临时存储区。

:

:提示已被临时存储

暂存(文件已修改,并已添加到暂存区域)

换了,扔进了临时存放区。

:

:提示已提交

已提交(文件在工作目录和git目录中保持不变)

工作目录和仓库里的文件一样老!

:

设置自己的信息

由于Git是一个分布式管理系统,所以在执行一些操作时,Git需要记录是谁做了这些事情。所以你需要向Git报告你自己:

git配置-全局用户名' Geng '

git配置-全局用户电子邮件' example@hello.world '

注意,我们在这里使用了- global参数,这意味着每个Git存储库都将使用这个配置。当然,你也可以对每个仓库进行不同的设置。

一些操作

创建版本库

初始化仓库

把文件添加到仓库

还是放在集结地?

git添加文件名

提交更改

或者可以说把暂存区里头的所有文件一口气都提交了。

git commit -m "我把bug给删了!"

查看当前状态

git status

会把你动的文件以及所处的状态(已修改?已暂存?已提交?)给标记出来。

比如某次执行这个命令,得到如下结果:

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:   Helloworld.txt
no changes added to commit (use "git add" and/or "git commit -a")

看到了not staged(第一行)与modified(第二行),说明你改了Helloworld.txt,但是并没有放进暂存区。下面还贴心的提示你记得用git add把东西放进暂存区,用git commit提交。

如果我git add一下,把东西丢进暂存区了呢?

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   Helloworld.txt

好的,可以看到已经放入暂存区,并且你这个文件是已修改的。这能不能说明已修改已暂存两个状态可以共存呢?我想某种程度上好像还不行,接着往下看——

查看已修改文件和仓库现有文件的区别

git diff <FILENAME>

实测如果一个文件是modified了的,如果还没通过git add放进暂存区,此时你用git diff,会把区别详细的给你说出来:

diff --git a/Helloworld.txt b/Helloworld.txt
index 9305eb5..9e0acbb 100644
--- a/Helloworld.txt
+++ b/Helloworld.txt
@@ -1 +1,2 @@
-Hello 看我 你在害怕什么
\ No newline at end of file
+Hello 看我 你在害怕什么
+a new line
\ No newline at end of file
D:\GitTest>git add Helloworld.txt
D:\GitTest>git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   Helloworld.txt

但你一旦放进暂存区,即便还没提交,git diff也啥都不会显示了。

查看历次提交的记录

git log

会从近到远的输出你每一次commit的记录,比如:

PS D:\GitTest> git log
commit 090ef56147016ce251c0b0086eb8a5faa66b520d (HEAD -> master)
Author: 120L******** <120L********@xxx.edu.cn>
Date:   Fri Apr 29 20:13:23 2022 +0800
    Change Helloworld.txt
commit 34415d69ace23724d0f8f65c37875f2eaec27fc2
Author: 120L******** <120L********@xxx.edu.cn>
Date:   Fri Apr 29 19:56:28 2022 +0800
    Touch Helloworld.txt

git回退

HEAD指向当前指针,HEAD^表示指向上一个版本,HEAD^^表示指向上上个版本,HEAD~100表示指向上一百个版本。

git reset --hard HEAD^

我还想回到刚才的版本?对不起,没有^HEAD,如果你知道刚才那次commit的ID的前几个字母是啥(可以看刚刚说过的git log命令的结果,里头有commit 090ef56147016ce251c0b0086eb8a5faa66b520d),也行,那就

git reset --hard 090ef5

不知道?或许你说咱再用git log看看?殊不知git log的结果也会回退,那就:

查看本地仓库的所有commit日志

git reflog

嗨嗨,自动帮我记了每次commit的ID

PS D:\GitTest> git reflog
090ef56 (HEAD -> master) HEAD@{0}: commit: Change Helloworld.txt
34415d6 HEAD@{1}: commit (initial): Touch Helloworld.txt

谜之——Git管理的竟然是修改!?

上课的时候讲的是Git管理的是修改的文件,但廖雪峰网站上说的是存的是变化??

廖雪峰这边做了个实验:

先改了一个文件,丢进暂存区;
接着把刚刚动过的文件又改了,但没有再次丢进暂存区;
接着提交。

发现被提交的是丢进暂存区的东西。

但到这里发现,好像说存的是文件,也无可厚非啊,可以理解为,丢进暂存区的,只是一个你add时文件的副本罢了。

回退的几种情况

只是修改了工作区文件,还没丢到暂存区

此时会把文件回退到和仓库一毛一样的状态

git checkout -- FILENAME
# OR
git restore <file>

其中第二个是我当前再用的这个版本提示给我的,好像更人性化了一些

(use "git restore ..." to discard changes in working directory)

文件已经丢到暂存区,并且你已经又对文件进行了改动

  1. 恢复到你刚刚丢进暂存区的样子,并仍然保持在暂存区的样子
git checkout -- FILENAME
# OR
git restore <file>
  1. 单纯的把文件从暂存区移出来,且保留了你最后所做的修改
git reset HEAD <file>
# OR
git restore --staged <file>

显然每一种情况里头的第二句更人性化一些。

删除的几种情况

真的想删一些文件了

# 假设你已经从工作区把要删的文件都删完了
git rm/add <file> 

手贱删错了,想恢复的和当前仓库里头一样

git checkout -- FILENAME
# OR
git restore <file>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now