Git 入门,别让你的代码成了脱疆的野马

👀 为什么要使用 Git?
用游戏闯关来比喻软件开发过程,你将很容易理解这其中的奥妙。
假设游戏有非常多的关卡,此时你正在闯关第99关卡。如果你成功闯关,则晋级到第100关,要失败,你就要返回第1关,从头开始闯一遍。
有 Git 帮助的话,你只需要将第99关重新闯一次即可。
Git 的妙处不止如此,它值得你深入探索!

本节 Git 命令概览

git init # 初始化 git 仓库
pwd # 输出当前工作目录地址。print work directory 的缩写
mdkdir dir-name # 创建文件夹。mdkdir 是 make directory 的缩写,参数 dir-name 是文件夹名称
ls # 列出当前目录下的所有可见文件。ls 是 list 的缩写
ls -A # 列出当前目录下的所有文件(包括隐藏文件)。-A 是 all 的意思
cd .. # 将工作目录切换到当前目录的上一级
cd dri-name # 将工作目录切换为当前目录的子级目录。dir-name 参数是子级文件夹名称 
git config --global user.name "my-name" # 设置用户名称
git config --global user.email "xxxx@xxx.com" # 设置用户邮箱
git add file-name # 将文件添加到暂存(索引)。file-name 参数表示文件名称
git commit -m "message" # 将暂存中的快照提交到存储区。-m 表示后面要跟随一个提交描述信息,是 --message 的简写
git status # 查看工作目录的状态

前提:你的电脑已经安装了 Git. 并且你也知道如何打开 Git 的命令窗口。

初始化 Git 存储库

git init

init 是 initialize 的简写。
定位到目标文件夹,使用初始化语句将其初始化为一个 Git 存储库。目标文件夹下会生成一个 .git 的隐藏文件夹。此时,这个目标文件夹又被叫作工作目录,而 .git 文件夹就是存储库。

查看终端当前运行的目录位置

pwd

pwd 是 print work directory 的缩写。
该命令会打印出终端当前运行的目录路径。

创建新的目录(文件夹)

mkdir 参数

mkdir 是 make directory 的缩写。
参数是文本夹的名称,一般要求文件夹的名称里不要有空格。如果有空格,可以使用引号将其包围起来(单引号或双引号都可以),如果名称中有单引号的话,则必须使用双引号将其包围起来。
如果试图创建一个与父级目录名称一样的文本夹,分报 File exites 的错误。

列出文件

ls

ls 是 list 的简写。
该命令会列出当前目录下所有的可见文件名。

ls -A

ls -A :A 表示 all 的意思。
该命令会列出当前目录下所有的文件,包括隐藏文件。
-A 短横线+大写字母的格式表示一种标志。而像写在开头的ls这种都属于命令。

切换目录

cd 参数

cd 是 change directory 的简写。
参数是目录名称。一般指的是当前目录下的子目录名称。

cd ..

表示返回上一级目录。(即返回父级)

设置个人信息(名字和邮箱)

git config --global user.name "My Name"
git config --global user.email "xxxx@xxx.com"

可以在任何目录下运行上面的语句。
并且以后还可以更改这些设置。
这里用到了config命令。

将变更添加到暂存

git add 参数

新建一个文件或修改一个文件后,可以使用add命令将变更变更对象的副本添加到暂存。
参数是文件名。

将暂存添加到存储区(提交)

git commit -m "message"

暂存区的临时文件将再次生成一个副本添加到存储区。并且还会生成一个关联的提交信息。
-m 是 --message 的简写。表示描述信息。

.git 存储库

.git 存储库分为两部分

  • 索引区(暂存区)
  • 对象数据库(存储区)

新建一个文件时状态为未追踪
执行add命令时,会在暂不区添加一个文件的副本用于追踪文件状态。此时状态为已追踪
执行commit命令时,会将暂存区已修改的文件创建一个副本添加到存储区。此时状态为无修改
当修改此文件后,此时状态为已修改

❓ 副本是记录的文件的副本还是只是文件中已做修改的副本?我的理解是新建的文件是整个文件,修改后记录的应该是修改信息的副本。

Git 如何确认文件是否已经被修改呢?

如果存储区的副本与暂不区的副本是一样的,但暂不区的副本与工作目录中的文件是不一样的则确认其已经被修改。状态为已修改

同理:如果工作目录的文件与暂存区副本是一样的,但暂存区与存储区的副本是不一样的,则是已修改-已暂存状态。

进行提交后,工作目录文件和暂存区副本及存储区副本都一样,则成为未修改状态。

暂存文件的临时性

当添加或编辑某文件并 add 后,暂存区此时就有了该文本此次修改后的副本。
此时可以继续修改该文件,然后再add,暂存区刚才的副本将被新修改的副本所覆盖。

💡 妙:这可以允许临时的修改的保存,而不用频繁地提交。

查看存储库的状态

git status

如何理解提交

追踪历史

提交时,除了文件副本,还会生成一个提交信息对象,内容如下:

  • tree: 7894fd1s
  • parent: 342d54s4
  • author: name
  • emai: xxxx@xxx.com
  • timestamp: 1196123
  • message: string

除了第一个提交,每个提交都会记录在它之前的那个提交的ID,即parent属性的值。因此,可以根据这个父级ID值进行向上的历史跟踪。

posted @ 2025-02-05 15:18  石起起  阅读(28)  评论(0)    收藏  举报