查看是否安装git
which git,
使用apt-get,yum,pacman等方式安装git,Mac可以使用homebrew进行安装
首先进行用户设置
git config --global user.name "name"
git config --global user.email "mail"
直接使用
git config
会显示更多设置选项
版本库也叫仓库(repository,即常说的repo),其本质上是一个目录文件,其下的所有文件被git 所管理,每个文件的修改、删除都能被git跟踪,从而我们可以在任何时刻追踪文件的历史或将其 还原到某个历史版本。
选择一个我们希望被git管理的目录,然后执行
git init
即可将该目录变成git可以管理的仓库,可以发现目录下多了一个**.git**目录 使用
git status
可以方便地查看当前版本库的状态
git能跟踪版本库内所有文本文件的每次改动,具体到哪一行增删了哪些词都会记录。对于二进制文件, git只能跟踪其大小的变化。
使用
git add <filename>
可以将文件添加到版本库,其中文件名可以使用通配符,如git add *可将目录下的所有文件都添加
到版本库,实际上是提交到了暂存区。
使用
git commit -m "comment"
可以将暂存区的文件提交到版本库,comment部分用来解释本次提交的代码改动说明,方便日后查看。
git diff
可以告诉我们上次提交之后版本库进行了何种修改。
在我们进行了多次提交后,可以使用
git log
来查看每次提交的细节,使用git log --pretty=oneline可以查看简化版的输出信息。其中包含了每次
提交的commit id和说明的内容。
git中使用HEAD指向当前的版本,**HEAD^**指向上一个版本,HEAD~10指向向上10个版本。
通过
git reset --hard HEAD^
可以将版本回退至上一次提交的版本,同理可回退至前若干个版本。 通过
git reset --hard <commit id>
可以将版本跳跃至对应的commit id的提交版本,但是git log不会显示当前版本之后的提交内容,
使用
git reflog
可以查看我们执行过的每条命令,从而找到我们目标版本的commit id。
git管理的是文件的修改,而非文件本身。我们每次使用git add会将当前的修改放进暂存区,而后续继续
对文件的修改则需要新的add操作。可以通过
git checkout -- <filename>
放弃对工作区内文件的修改,通过
git reset HEAD <filename>
放弃暂存区内的修改。
git中删除操作也是一种修改,从版本库中删除文件可以用git rm删除并使用git commit提交修改,通过
上述的版本库穿梭、撤销修改的操作也可以实现恢复文件的操作。
git的最突出特点之一就是远程仓库,可以将一台电脑的git仓库方便地克隆到其他电脑里。GitHub就是著名的 免费提供git仓库托管服务的网站,注册GitHub账号即可免费获得git远程仓库。本地的git仓库和GitHub仓库间 的传输通过ssh协议进行,所以需要先进行ssh设置。
- 创建ssh key
ssh-keygen -t -rsa -C <email>
- 在主目录下找到
.ssh目录,找到id_rsa.pub文件 - 登陆GitHub,在settings->SSH Keys页面添加id_rsa.pub的内容
在GitHub上创建一个新的仓库,创建页面会提示使用
git remote add origin git@github.com:username/repo.git
或者
git remote add https://github.com/username/repo.git
在本地链接远程库,通过
git push -u origin master
将本地的master分枝推送到远程,第一次使用是会有验证GitHub服务器的SSH Key的警告,输入yes来将GitHub服务器 的SSH Key添加到本地的信任列表里。
通过
git clone <url>
的方式可以将远程库克隆到本地。
git将每次提交串成一条时间线,每条时间线被称为一个分支,默认情况下有一条主分支master。多人协作时,为了 不妨碍他人的工作,可以创建新的分支进行修改,在修改完成后再和master分支合并。
通过
git branch dev
git checkout dev
可以创建一条新的名为dev的分支并指向它。也可以使用git checkout -b dev一步完成这个操作。
通过git branch可以查看所有的分支,当前分支前会有一个*号。现在我们所有的提交都会在dev分支上进行,
当我们完成所有修改并提交后,使用
git checkout master
切换回master分支,再查看修改的文件会发现所有在dev上的修改都看不到了,通过
git merge dev
可以将dev与master合并。然后可以通过
git branch -d dev
删除dev分支,再用git branch查看就只有master分支了。
如果我们在新分支提交后切换回master又做了新的提交,这时合并二者会出现冲突,需要我们手动解决冲突
后进行合并。git status会告诉我们存在冲突的文件,打开对应文件会发现git使用<<<<<<<,=======
>>>>>>>标注出了不同分支的内容,将文件修改成我们需要的内容后再进行add和commit即可解决冲突。
通过git log --graph可以看到分支合并的情况。
当我们从远程仓库克隆时,git自动把本地的master分支和远程的master分支对应,远程仓库默认名称
为origin,通过
git remove -v
可以查看远程分支的详细信息。
通过
git push origin master
git push origin dev
等可以向远程仓库推送对应的分支。多人协作时,远程分支可能在你推送时已经更新过,这时会出现推送失败的提示, 使用
git pull
将远程的分支抓取到本地试图合并,若有冲突还需手动解除冲突,在本地完成合并和提交后再次push即可。
git pull可能会提示no tracking information的错误,需要使用
git branch --set-upstream-to <branch-name> origin/<branch-name>
将本地的分支与远程的分支链接。
更多git的使用细节可以从https://book.git-scm.com/获取更为详细的git使用手册, 廖雪峰的Git教程 也是相当简明易懂的git教学网站(本文档git部分参考了此网站内容)。
Doxygen是为软件生成说明文档的工具。
Doxygen 的官方下载页面 提供了多种安装方案
可以通过clone他们的git repo得到他们最新的测试版本
git clone https://github.com/doxygen/doxygen.git
cd doxygen
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make
make install
也可以下载最新的发行版本,他们提供了源码版,二进制版,Windows版和Mac OS的dmg安装文件
以源码版为例,我们下载doxygen-1.8.14.src.tar.gz文件解压
tar -czvf $PATHOF(doxygen-1.8.14.src.tar.gz)
cd doxygen-1.8.14
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make
make install
我们还可以从安装文件生成Doxygen的使用说明文档,回到build目录
cmake -Dbuild_doc=YES ..
make docs
我们可以得到html和latex两种格式的说明文档,到html目录下,打开任意一个html
文件即可在浏览器中以html的形式浏览Doxygen的使用说明文档;在latex目录下进行编译
即可得到其pdf格式的说明文档。
Doxygen通过专用的配置文件生成代码的说明文档,可以通过
doxygen -g <config-file>
生成一个配置文件的模板。Doxygen的配置文件采用<TAGNAME>=<VALUE>的结构,与Makefile的结构
类似。模板中有对每一个标记的详细说明,其中以下标记较为重要
- <OUTPUT_DIRECTORY>: 这个标记定义生成的说明文档放置的位置,可以使用相对路径
- : 这个标记记录需要生成说明文档的源代码的位置,可以使用多个以空格分隔的路径,可以使用相对路径
- <FILE_PATTERNS>: 这个标记定义doxygen搜索源文件的后缀名
- : 这个标记值为YES时,doxygen会递归地搜索整个INPUT目录的层次结构并提取信息
- <EXTRACT_ALL>: 这个标记设置为YES时,doxygen会对所有的类和函数提起信息,即使其没有说明文档。
编辑完配置文件后,通过
doxygen <config-file>
即可得到html和latex两种格式的说明文档文件,用浏览器打开html目录下的index.html文件即可查看说明文档。
latex格式的说明文档需要进一步编译为pdf格式。
C风格的代码说明语句可以有如下几种形式
/**
* ...text...
*/
/*!
* ...text...
*/
///
/// ...text...
///
//!
//! ...text...
//!
/***************************//**
* ...text...
******************************/
////////////////////////////////
/// ...text...
///////////////////////////////
doxygen对代码的说明通过注释模块来实现,对于C风格的代码,其基本格式如下
/*! \class Text
\brief A test class.
A more detailed description
*/
其中\class用于类的注释,还有许多其他类型注释如下
\struct用于C结构体注释\fn用于函数的注释\var用于变量的注释\def用于宏的注释\typedef用于定义的注释\file用于文件的注释\namespace用于命名空间的注释
更为详细和进阶的doxygen使用方法可以查看我们在安装时生成的说明文档。