分类: 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.参考网站: