My Avatar

Xiaofei

信仰共产主义,后现代主义者,结构主义者,奇妙发现世界~~
`

文件修改忘记改了什么怎么办?使用git

2019年06月23日 星期二, 发表于 北京 | 浏览量: -

如果你对本文有任何的建议或疑问, 谢谢! :)

”—-你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”

这里主要就是解决一个问题: 在平时对纯文本进行编辑时,不论这文本是程序代码还是文字,任何人都容易在编辑时出错,那么如何看出一个文件我们改了什么?什么时候改的?这时就要用到git这个工具,来做一下简单的版本控制。

 1```
 2$ man git
 3```
 4
 5当我们学习使用git时,查看命令最快的方法是用man命令,对每个命令都有人写好了标准的使用手册,还可以上网查阅相关资料,如[git官网](https://git-scm.com/),如[高能所计算环境使用手册](http://afsapply.ihep.ac.cn/cchelp/zh/),如[git Brief](https://devcharl.github.io/devcharl.github.io/2019/04/25/git_usage/),当然现在”STFW”是十分方便的,后面的内容这里不厌其烦地详细写了一下。
 6
 7这里介绍git的基本用法,只学学最简单的,另外还有github,gitpage,gitbook和其对应的国产软件将在之后再写写看。这是程序员们使用的基本工具,Linus Torwalds发起的版本控制软件,计算机科学快速分发共享的github正是于此建立。如同学所说去中心化的计算机科学的发展催化了开源,微软在收购github之后也正式高调加入了开源软件运动,这才有了.Net和c#的开源,这才使得如今在中美贸易战的情况下,我们中国人依然可以开发像[SeeSharp](https://github.com/SeeSharpOpenSource/SeeSharpTools)这样优秀(笑)的想要设法替代[NI LabVIEW](http://www.ni.com/zh-cn.html)的[行业软件](http://www.jytek.com/home)。
 8
 9git可以记录并显示文件的修改历史,还可以进行不同历史版本的比较,如果需要可以退回上次的修改。这里所讲都是deepin linux下的内容(简单!),win操作系统的请自行百度。
10
11(自己之前都没有写下来该怎么用,还经常忘记,今天又发生了代码误删的情况所以这回要把git学会了)(2017年11月的某一天)
12
13首先是检查git的版本:
14
15```
16$git --version 
17git version 1.8.2.1
18```
19
20下一步是了解基本概念,什么是git(也可以跳过直接看使用):
21
22在Git中,每个版本库都叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录下所有内容(子目录递归包含)发生的所有更新。假如我们现在建立一个仓库,仓库所在的这个目录中会有一个”.git”的文件夹(ls -al查看)。.git这个文件夹非常重要,所有的版本信息、更新记录,以及Git进行仓库管理的相关信息全都保存在这个文件夹里面。所以,想要删除该目录的git仓库设置,就删除该文件夹即可。
23
24接下来就是使用,主要就是如下命令按顺序试试,基本就会了:
25
26```
27$git init //在当前目录(工作目录)初始化仓库
28#已初始化空的 Git 仓库于 /home/cuixf/abc/.git/
29$git status //此时查看工作目录状态,如果有文件会显示
30#位于分支 master
31#
32#初始提交
33#
34#未跟踪的文件:
35#  (使用 "git add <文件>..." 以包含要提交的内容)
36#
37#  a.txt
38#  a/
39#
40#提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
41```
42
43```
44$git add . //注意有个".",表示把"./"目录下的所有文件添加到Git里,建立工作空间Workspace,这时如果再次查看,"git status"可以看到新增了文件
45$ git commit -m "test1" //这里提交工作目录的当前版本给Git,可以输入此次修改的注释信息如"test1",可以看到所有文件提交成功:
46#[master(根提交) 64f42d0] test1
47# 3 files changed, 0 insertions(+), 0 deletions(-)
48# create mode 100644 a.txt
49# create mode 100644 a/b.txt
50# create mode 100644 a/c/c.txt
51git status //再次查看,发现目前版本提交完毕
52#On branch master
53#nothing to commit (working directory clean)
54```
55
56最主要的对文件修改历史进行比较,如果此时已经修改工作目录的文件,修改保存后,输入
57
58```
59$ git status //发现已经出现修改
60$ git diff //即可显示修改了什么,会有++,--这样的符号也就是删减情况,另外还可以使用图形GUI界面(gitk命令)看,确认修改后先如上add然后commit即可保存当前版本
61```
62
63另外如果联网后,想要下载/上传自己的仓库到远程服务器,可以看git的命令(clone,push,pull?),看看github的基本用法。
64
65```
66$git clone/push/pull
67```

继续学习,可以学习分支branch(git merge/rebase),看看回滚(git reset/revert/checkout),看看远程管理(git remote/tag)等等。

这些虽然说净是些程序员的东西,但是既然目前计算机科学做的很好,自由软件运动思想也很超前影响力很大,那么了解一下也是很好的。看纪录片操作系统革命,很有意思,影片中观点讲述了自由软件运动整体的发展过程,其基本观点是讲,电脑如果受限于win这样的商业的操作系统,购买的电脑就像是租的,受制于微软这家企业,所以自由软件运动让买了电脑的人可以真正拥有自己的电脑,最终使个人电脑提供的各种计算资源回到了个人的手中。现在的开放研究运动其实也在很大程度上受到自由软件运动的启发,要将科学研究的创新劳动过程带回到人的本质上来。

当然物理学在开放研究方面一直做的都比较好,处在前沿位置SCOAP,发展劲头一直都在继续How the insights of the Large Hadron Collider are being made open to everyone,未来的物理学发展可能超乎我们现在的想象。

参考1:Git Step by Step 参考2:IronMan

~~继续思考~~

-------开放研究之所以可能