Skip to content

Commit b591619

Browse files
committed
add amend tips
1 parent 4032723 commit b591619

File tree

3 files changed

+36
-28
lines changed

3 files changed

+36
-28
lines changed

_posts/2024-08-15-Git入门基础知识汇总.md

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,23 +95,26 @@ drwxr-xr-x 1 zjc18 197609 0 Mar 4 17:03 ../
9595
drwxr-xr-x 1 zjc18 197609 0 Mar 4 17:04 .git/
9696
```
9797

98-
### 2.2 修改的上传与查看
99-
- 使用`commit`提交时最好要写上简略的一段Comment,概括修改内容
98+
### 2.2 提交修改内容
99+
100+
#### 2.2.1 暂存修改内容
100101

101102
![区的示意.png](/resources/2024-08-15-Git入门基础知识汇总/区的示意.png)
102103

103104
- Git工作目录下的文件如果发生了增删改等操作,存在以下三个状态
104105
- 一:未跟踪,即仅仅在工作区做了修改
105106
- 二:已暂存,即把修改上传到了暂存区
106107
- 三:成为了一次提交记录,即从暂存区提交到了仓库
107-
- 指令`touch file_name`用于创建文件,`git status`用于查看当前仓库状态
108+
- 指令`touch`用于创建文件,如下创建了一个名为`test1``txt`文件
108109

110+
```bash
111+
touch test1.txt
109112
```
110-
$ touch test1.txt
111-
//指令创建文件
112113

114+
- 指令`git status`用于查看当前仓库状态
115+
116+
```
113117
$ git status
114-
//查看状态
115118
On branch master
116119
No commits yet
117120
Untracked files:
@@ -120,14 +123,12 @@ Untracked files:
120123
nothing added to commit but untracked files present (use "git add" to track)
121124
```
122125

123-
- 使用`git add`上传修改到暂存区
126+
- 指令`git add`用于将修改上传到本地的暂存区
127+
- `git add filename`只上传特定修改,此处是`filename`文件
128+
- `git add .`可以上传本地的所有修改
124129

125130
```
126-
git add test1.txt
127-
//上传特定修改
128-
git add .
129-
//上传所有修改
130-
131+
$ git add test1.txt
131132
$ git status
132133
On branch master
133134
No commits yet
@@ -136,11 +137,11 @@ Changes to be committed:
136137
new file: test1.txt
137138
```
138139

139-
- 使用`git commit`将暂存区的修改提交至仓库,并作注释,形成一个版本
140+
## 2.2.2 提交暂存内容
141+
- 使用`git commit`将暂存区的修改提交至仓库形成一个版本,其中可通过`-m`参数为该提交添加评论注释,可参考编写[规范](https://blog.csdn.net/hzf0701/article/details/134367234)
140142

141143
```
142144
$ git commit -m "commit a file test1.txt"
143-
//此处-m后是注释内容,注意引号前的空格
144145
[master (root-commit) 5f69526] commit a file test1.txt
145146
1 file changed, 0 insertions(+), 0 deletions(-)
146147
create mode 100644 test1.txt
@@ -150,7 +151,8 @@ On branch master
150151
nothing to commit, working tree clean
151152
```
152153

153-
- 可以使用`git log`查看提交日志
154+
#### 2.2.3 查看提交记录
155+
- 可以使用`git log`指令查看提交日志
154156

155157
```
156158
$ git log
@@ -160,7 +162,7 @@ Date: Mon Mar 4 17:36:25 2024 +0800
160162
commit a file test1.txt
161163
```
162164

163-
- 对当前文件夹进行修改,并再次提交
165+
- 下面我们再造一些提交记录,方便后面展示
164166

165167
```
166168
$ git status
@@ -173,7 +175,6 @@ Changes not staged for commit:
173175
no changes added to commit (use "git add" and/or "git commit -a")
174176
175177
$ git add .
176-
//提交到暂存区
177178
178179
$ git status
179180
On branch master
@@ -182,7 +183,6 @@ Changes to be committed:
182183
modified: test1.txt
183184
184185
$ git commit -m "update file1.txt"
185-
//提交到仓库
186186
[master 06afd53] update file1.txt
187187
1 file changed, 1 insertion(+)
188188
@@ -211,6 +211,15 @@ $ git log --pretty=oneline --all --graph --abbrev-commit
211211
* 5f69526 commit a file test1.txt
212212
```
213213

214+
#### 2.2.4 覆盖本地提交
215+
- 可以用`--amend`参数将当前暂存区的内容和上一次的提交合并为一个新的提交,这样可以避免冗余的提交记录(例如你在本地提交了后发现有个地方还得改下,改完再提交就产生了两个提交导致冗余且不好看),使用上述指令后(请**在阅读完远程仓库管理内容后再回来**阅读这部分内容)
216+
- 若上一个提交是已经提交到了远程的,那么本地**`--amend`覆盖上条提交记录而产生的新提交记录**会与**远程仓库的未被覆盖的最新提交记录**冲突,此时可考虑用`--force`强制提交,但这在多人协作时风险极大(单人随意),请自己把握是否这样使用
217+
- 若上一个提交是本地还未`push`到远程的提交记录,那你使用该指令并不会产生任何的`push`问题
218+
219+
```bash
220+
git commit -m "commit comment message" --amend
221+
```
222+
214223
### 2.3 版本回退
215224

216225
#### 2.3.1 `reset --soft`

_posts/2025-06-01-关于DBS中的函数依赖与关系模式范式.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,18 @@ math: true
2525
- $r$指代任意一个$R$的实例(即该抽象关系模式的一个具体关系模型实例)
2626
- $X$和$Y$分别是关系模式$R$中包含的属性(数据表$r$的列)的任意一种子集
2727
- $t_1$和$t_2$是关系模型$r$中的任意两个元组(数据表$r$的行)
28-
- 若$t_1[X]=T_2[X]$可以推出$t_1[Y]=T_2[Y]$,则说明$X$和$Y$间具有某种联系,每一组这样的属性子集间的联系都称作$R$的一种**函数依赖**(Functional Dependency),此处记作$X\rightarrow Y$,注意该联系**反向不一定成立**
28+
- 若$t_1[X]=t_2[X]$可以推出$t_1[Y]=t_2[Y]$,则说明$X$和$Y$间具有某种联系,每一组这样的属性子集间的联系都称作$R$的一种**函数依赖**(Functional Dependency),此处记作$X\rightarrow Y$,注意该联系**反向不一定成立**
2929

3030
![函数依赖举例.png](/resources/数据库系统/函数依赖举例.png)
3131

3232
### 1.2 阿姆斯特朗公理
3333

34-
>阿姆斯特朗公理(Armstrong Axioms)是用于推导函数依赖的一组基本推理规则,其中有三条最基本的规则,其余规则均可由这三者推导得出;关系模式$R$的属性集合为$U$,$X,Y,Z,W$等均为$U$的子集,用$F$指代$R(U)$的**所有函数依赖的集合**
34+
>阿姆斯特朗公理(Armstrong Axioms)是用于推导函数依赖的一组基本推理规则,其中有三条最基本的规则,其余规则均可由这三者推导得出
3535
3636
#### 1.2.1 基本规则
3737
- 自反律(Reflectivity):若属性子集$Y$是$X$的子集,则二者组成一对函数依赖$X\rightarrow Y$
38+
- 此时称$X\rightarrow Y$为**平凡函数依赖**(Trivial FD)
39+
- 若不满足$Y\subseteq X$,则称$X\rightarrow Y$为**非平凡函数依赖**(Non-Trivial FD)
3840

3941
$$Y\subseteq X\Rightarrow X\rightarrow Y$$
4042

@@ -73,19 +75,16 @@ $$
7375
\end{aligned}
7476
$$
7577

76-
#### 1.2.3 平凡函数依赖
77-
- 对于函数依赖$X\rightarrow Y$
78-
- 若满足$Y\subseteq X$,则称$X\rightarrow Y$为**平凡函数依赖**(Trivial Functional Dependency),因为由于阿姆斯特朗公理中的自反律,$Y\subseteq X$是显而易见的
79-
- 若不满足,则称$X\rightarrow Y$为**非平凡函数依赖**(Non-Trivial Functional Dependency)
80-
81-
#### 1.2.4 候选键严格定义
78+
#### 1.2.3 候选键严格定义
8279
- 候选键是更严格的超键(关系中某个属性或属性组的值能**唯一标识一个元组**,则该属性或属性组称为超键),若关系中某个超键在**去掉任一属性后不再成为超键**,则其称为候选键
8380
- 关系模式$R$的属性集合为$U$,$K$是$U$的一个子集,若$K$满足$K\rightarrow U$,且不存在一个$K'\subset K$能使得$K'\rightarrow U$,则$K$就是$R$的一个候选键
8481

8582
![候选键的定义.png](/resources/数据库系统/候选键的定义.png)
8683

8784
### 1.3 逻辑蕴含与两类闭包
8885

86+
>关系模式$R$的属性集合为$U$,$X,Y$等代数表示$U$的子集,$F$表示$R(U)$**所有函数依赖的集合**
87+
8988
#### 1.3.1 逻辑蕴含的函数
9089
- 若函数依赖集$F$中**逻辑蕴含**(Logical Implication)$X\rightarrow Y$,则根据$F$中的函数依赖,能够推导出函数依赖$X\rightarrow Y$,这记作
9190

@@ -94,7 +93,7 @@ $$F\models X\rightarrow Y$$
9493
![函数依赖集的逻辑蕴含实例.png](/resources/数据库系统/函数依赖集的逻辑蕴含实例.png)
9594

9695
#### 1.3.2 函数依赖集的闭包
97-
- 关系模式$R$的函数依赖集$F$的**闭包**$F+$指代包含$F$所**逻辑蕴含的所有函数依赖**的集合(离散数学中关系$R$的闭包$S$指的是在$R$的基础上新增几个元素组成新关系$S$,使得$S$是能够满足某种性质$P$的最小的关系,注意与此处的函数依赖闭包进行区分理解
96+
- 关系模式$R$的函数依赖集$F$的**闭包**$F+$指代包含$F$所**逻辑蕴含的所有函数依赖**的集合(离散数学中关系$R$的闭包$S$指的是在$R$的基础上新增几个元素组成新关系$S$,使得$S$是能够满足某种性质$P$的最小的关系,注意与此处的函数依赖闭包进行对比理解
9897

9998
![函数依赖闭包的示例.png](/resources/数据库系统/函数依赖闭包的示例.png)
10099

@@ -319,7 +318,7 @@ $$r=\pi_{R_1}(r)\Join\pi_{R_2}(r)...\Join\pi_{R_n}(r)$$
319318
#### 4.5.2 模式分解
320319
- 当关系模式$R$不满足BCNF时,应当将其分解为满足BCNF的子模式,以下是通用的算法
321320
- 要注意该分解过程中只能保证无损,**而无法保证全部函数依赖关系的保有**(而前文提到的分解为符合2NF/3NF的子模式,是能同时保证无损和依赖保有的)
322-
- 因为BCNF规定函数依赖的左侧不能是非超键,故分解过程中会将那些**左侧为非超键的函数依赖拆开,导致寒素依赖被破坏**
321+
- 因为BCNF规定函数依赖的左侧不能是非超键,故分解过程中会将那些**左侧为非超键的函数依赖拆开,导致函数依赖被破坏**
323322

324323
![BCNF范式的示例P2.png](/resources/数据库系统/BCNF范式的示例P2.png)
325324

-21.4 KB
Loading

0 commit comments

Comments
 (0)