Git版本回退
Git详细工作流程的可视化
参考博客: Git 工具 - 重置揭密
新建仓库并提交文件
假设我们进入到一个新目录, 其中有一个文件。 我们称其为该文件的 v1 版本, 将它标记为蓝色。 现在运行 git init, 这会创建一个 Git 仓库, 其中的 HEAD 引用指向未创建的 master 分支。
此时, 只有工作目录有内容。
现在我们想要提交这个文件, 所以用 git add 来获取工作目录中的内容, 并将其复制到索引中。
接着运行 git commit, 它会取得索引中的内容并将它保存为一个永久的快照, 然后创建一个指向该快照的提交对象, 最后更新 master 来指向本次提交。
此时如果我们运行 git status, 会发现没有任何改动, 因为现在三棵树完全相同。
修改文件并提交至仓库
现在我们想要对文件进行修改然后提交它。 我们将会经历同样的过程;首先在工作目录中修改文件。 我们称其为该文件的 v2 版本, 并将它标记为红色。
如果现在运行 git status, 我们会看到文件显示在 “Changes not staged for commit” 下面并被 ...
行列式是如何被定义出来的
写在开头
这篇文章并不是在介绍行列式,我希望阅读这篇的朋友并不是第一次接触行列式和空间变换。我写这篇文章是想从空间变换的角度来引入行列式,而并不是像课本上一样直接给出它的定义,并且希望你们可以从这个过程中理解行列式的意义。
空间变换
首先,我们假设在n维空间上有个变换(不一定是线性的),把这个变换设为:
{y1=f1(x1,x2,…,xn)y2=f2(x1,x2,…,xn)…yn=fn(x1,x2,…,xn)\begin{cases}
y_1 = f_1 (x_1, x_2, \dots,x_n)\\
y_2 = f_2 (x_1, x_2, \dots,x_n)\\
\dots\\
y_n = f_n (x_1, x_2, \dots,x_n)\\
\end{cases}
⎩⎨⎧y1=f1(x1,x2,…,xn)y2=f2(x1,x2,…,xn)…yn=fn(x1,x2,…,xn)
可以知道y1,y2,…,yny_1, y_2, \dots,y_ny1,y2,…,yn和x1,x2,…,xnx_1,x_2,\dots,x_nx1,x2,…,x ...