Chinaunix首页 | 论坛 | 博客
  • 博客访问: 409275
  • 博文数量: 101
  • 博客积分: 2247
  • 博客等级: 大尉
  • 技术积分: 979
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-15 22:39
文章分类

全部博文(101)

文章存档

2012年(1)

2011年(100)

分类: LINUX

2011-06-15 23:00:56

大家都用过版本控制工具,如著名的svn,

但在linux下感觉不是很方便,

所以研究了linux下的另一个强大的分布式版本控制工具——git。

总结了自己常用的几个命令:

1.$ git init

初始化

2.$ git status 

查看状态

3.$ git add 文件

第一次为加入跟踪

第二次为加入暂存区

4.$ git commit -m "My first backup"

提交暂存区快照,m为注释

5.$ git commit -a -m "My first backup"

提交现状(即包括加入暂存区,和提交暂存区两步)

6.$ git diff

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

7.$ git diff --cached

查看已经暂存起来的文件和上次提交时的快照之间的差异

8.$ git log

来显示最近提交列表,以及他们的SHA1哈希值

9.$ git log –p -2

我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新

10.$gitk

使用图形化工具查阅提交历史

11.$ git reset --hard 766f

来恢复到一个指定的提交状态,并从记录里永久抹掉所有比该记录新一些的提交。

766f是哈希值的前几个字符。

12.$ git checkout 82f5

这个操作将把你带回过去,同时也保留较新提交。然而,像科幻电影里时光旅行一样, 如果你这时编辑并提交的话,你将身处另一个现实里,因为你的动作与开始时相比是不 同的。

82f5是哈希值的前几个字符。

13.$ git checkout master

切换到主分支。

另外,为避免Git的抱怨,应该在每次运行checkout之前提 交(commit)或重置(reset)你的改动。

还以电脑游戏作为类比:

git reset --hard: 加载一个旧记录并删除所有比之新的记录。

git checkout: 加载一个旧记录,但如果你在这个记录上玩,游戏状态将偏离第 一轮的较新状态。你现在打的所有游戏记录会在你刚进入的、代表另一个真实的分支 里。我们稍后论述。

你可以选择只恢复特定文件和目录,通过将其加在命令之后:

14.$ git checkout 82f5 some.file another.file

小心,这种形式的 checkout 会不声不响地覆盖文件。为阻止意外发生,在运行任何 checkout命令之前做提交,尤其在初学Git的时候。通常,任何时候你觉得对运行某个命 令不放心,无论Git命令还是不是Git命令,就先运行一下 git commit -a 。

15.$ git branch testing

新建一个分支 testing

=======================================================================

16.忽略某些文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,像是日志或者编译过程中创建的等等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,来看一个简单的例子:

$ cat .gitignore

*.[oa]

*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

=======================================================================

17.移除文件

$ rm grit.gemspec

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changed but not updated” 部分(也就是_未暂存_清单)。

18.$ git rm grit.gemspec

这时需要再运行 git rm 记录此次移除文件的操作,最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:

$ git rm --cached readme.txt

=======================================================================

19.移动文件或改名

$ git mv file_from file_to

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.txt README

$ git rm README.txt

$ git add README

20.参考网站:

阅读(1816) | 评论(0) | 转发(0) |
0

上一篇:新篇章

下一篇:TI AM/DM37x平台

给主人留下些什么吧!~~