一、GIT
1.1Gogs
Go语言开发的Git服务器。https://gogs.io/
1.2 软件依赖
yum库
访问阿里镜像站http://mirrors.aliyun.com ,找到centos,点击右边“帮助”
1.2.1 Git安装
# yum install git -y
设置mysql数据库环境,mysql_secure_installation
1.2.2 安装
下载gogs安装程序gogs0.11.4_amd64.tar.gz,上传到Centos解压,生产gogs目录,里面就是gogs所有文件。初始化数据库
$ mysql -uroot -p < scripts/mysql.sql # 其实就是创建了一个gogs的库
为gogs库创建mysql用户gogs,并授权
mysql> grant all on gogs.* to ‘gogs’@’%’ identified by ‘gogs’;
mysql> flush privileges;
1.3 配置
参考官方文档 https://gogs.io/docs/advanced/configuration_cheat_sheet.html
数据库(database)
二、Git
安装: https://git-scm.com/downloads
下载对应操作系统的Git客户端版本
概念
Repository仓库、版本库:git初始化后,会在当前目录生成一个.git目录,这就是版本库
Workspace工作空间、工作区
.git所在的目录就是工作区,一般是项目的根目录
index索引:介于工作区和版本库之间,暂存修改的
remote 远程版本库:网络上的另一个版本库,可以和本地库交互
使用
初始化一个版本库
$ git init
在当前目录中增加了一个.git目录,不要自行修改这个目录里面的文件。当前目录一般是项目的根目录。
添加文件
$ echo ‘
$ git add index.htm
单个文件添加:
这一步是把文件的当前变化增加到索引中,也就是以后这个文件需要版本库来跟踪管理,注意这不是提交。此时,文件还可以继续修改,还可以添加新的被跟踪文件,一定要add才能把这些改变加入到索引中。
多个文件添加:
$ git add .
.点号,代表当前目录,这条命令将递归添加当前目录及其子目录所有文件
只要是目录,就会递归添加该目录下的文件和子目录。
查看状态
$ git status
$ git status -s
git的文件分类
- 追踪的Tracked,已经加入版本库的文
- 未追踪的Untracked,未加入到版本库的未被管理的文件
- 忽略的Ignored,git不再关注的文件,例如一些临时文件 .gitignore文件中,目录以/结尾,行起始的!是取反
.gitignore内容如下:
.ipynb
pycache/
.
忽略文件不需要自己写,Python的已经有了
了https://github.com/github/gitignore/blob/master/Python.gitignore
$ wget -O .gitignore https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore
其它语言的在这里找 https://github.com/github/gitignore
提交代码
$ git commit --help
$ git commit -m “First Commit”
[master (root-commit) 8a73953] First Commit
Committer: python <python@nodex.(none)>
commit 提交更改到版本库
-m 填写本次日志消息,必须写。工作中,程序员应该对每一次提交写明做了什么改动
文件的生命周期
&emsp
;文件add后,就成为可跟踪文件的未修改状态unmodified,修改后,文件就变成modified状态。再次add后,将变化提交到索引,状态变为staged,这才能提交。提交成功,文件状态从staged变回unmodified。
git的提交
git的提交分为两个步骤:
暂存变更:add作用是把新文件或者文件新的改动添加到一个暂存区stage,也就是加入到index中。
提交变更:commit提交的是暂存区中的改动,而不是物理文件目前的改动,提交到当前分支,默认是master分支。
也可以使用下面命令,将两步合成一步
$ git commit index.htm
如果改动了一批文件,一个个写名字很麻烦,使用下面的命令:
$ git commit -a
-a,–all 会把所有跟踪的文件的改动自动暂存,然后commit。上面命令未提交message,会出现一个类似vi命令的
操作界面,需要编写message之后,才行。
也可以使用下面的命令,把message信息一并填写了。
$ git commit -a -m “message”
增补
二次提交后,忘记加入一个文件about.htm
–amend 修改,通过创建一个新的commit来replace当前分支的顶部。
也可以在命令中继续使用-m选项直接提交message。
git log 查看一下版本库里面提交的历史记录。
diff比较
查看各种差异:
git diff 查看被跟踪文件未暂存的修改,比较暂存区和工作区
git diff --cached 查看被跟踪文件暂存的修改,比较暂存区和上一次commit的差异
git diff HEAD ,查看被跟踪文件,比较工作区和上一次commit的差异。HEAD指代最后一次commit
HEAD
HEAD可以看做是一个游标,指向当前分支最后一次提交。
HEAD的值存储在.git/HEAD中。
HEAD,指代最后一次commit
HEAD^,指代上一次提交
HEAD^^,指代上上一次提交
上n次提交,表示为HEAD~n
检出和重置
checkout 用于切换分支,或恢复工作区文件。注意,checkout会重写工作区,这个命令还是较为危险的。