Blog

Learning by doing.


Git初步(一)

May 29, 2013 • Git • Tags: Git

今天开始正式使用Git来进行SPS开发的版本控制。

Git是一个分布式版本控制/软件配置管理软件,原来是linux内核开发者林纳斯·托瓦兹(Linus Torvalds)为了更好地管理linux内核开发而创立的。需要注意的是和GNU Interactive Tools,一个类似Norton Commander界面的文件管理器有所不同。 Git最初的开发动力来自于BitKeeper和Monotone。Git最初只是作为一个可以被其他前端比如Cogito或StGIT包装的后端而开发的。不过,后来Git内核已经成熟到可以独立地用作版本控制。很多有名的软件都使用Git来进行版本控制,其中有Linux内核、X.Org服务器和OLPC内核开发。 @Wikipedia

建立项目并初始化Git

mkdir proj
cd proj
touch README
git init

查看状态

git status

发现没有被跟踪的文件,提示使用git add <file>命令。

跟踪与去跟踪文件

git add <file>

此时如果再查看状态便可发现new file: <file>

如果不想让git跟踪某一文件,可以

git rm <file>

如果觉得上面的方法麻烦,可以

git add .

让git重新扫描当前的目录,自动跟踪被修改的文件。

如果确实有些文件不想被跟踪,可以编辑.gitignore文件,在文件中输入不想被跟踪的文件的文件名即可。

发布

首先对自己的账户进行设置。

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

此时会在用户主目录生成.gitconfig,可以通过如下命令查看

cat ~/.gitconfig

然后就可以发布

git commit -m "<message>"

这样我们就把空文件README发布到了git的版本库中。

如果文件被修改,可以使用-a参数自动添加已被跟踪了的被修改过的内容,这样就不必每次都git add刷新文件状态了。

git commit -a -m "<message>"

如果要留多行,可以

git commit -a

这时可能需要设置一下自己喜欢的编辑器了

git config --global core.editor vim

然后在执行git commit -a后,就可以在首行添加多行留言。添加的格式是:首行标题,空行,单行或者多行的正文。

如果要在版本库里显示每次修改的内容,可以使用-v参数

git commit -a -v

如果觉得这个命令太长了,可以设置别名

git config --global alias.ci "commit -a -v"

以后就只要输入如下命令即可

git ci

查看日志

git log

这样就可以看到版本的修改信息了。

若要查看具体的修改内容,可以

git log -p

也可以使用前端工具tig来查看版本信息

tig

tig的用法很简单,此处就不赘述了 : )

撤销修改内容

如果想在提交版本之前查看修改内容,则可输入

git diff

如果发现想要撤销掉最新的修改,可以

git reset --hard HEAD

如果发现整个最新的版本都不想要了,可以

git reset --hard HEAD^

如果只是想撤销某个文件的最新修改,可以

git checkout <file>

这个动作实际上是取出版本库中最新的<file>,效果就是将这次的修改覆盖掉。

如果发现项目中存在一个小bug需要修复,可以

git stash

从而把最新的修改贮藏起来。等到bug被修复后,

git ci

将修复bug的这一动作提交,然后

git stash apply

取出之前的其它修改,然后继续开发。

分支

查看目前所在节点

git branch

建立分支

git checkout -b <name>

这时候在<name>分支上的修改都不会影响master上的文件。

如果在分支上的测试完毕,想回到master,可以

git checkout master

然后

git branch -D <name>

以删除<name>分支

如果想以某一历史版本作为分支,可以用tig查看版本号,版本号可以只输入前5位。然后

git checkout <version> -b <name>

Tags: Git