红联Linux门户
Linux帮助

Git命令使用整理

发布时间:2014-08-09 09:30:08来源:linux网站作者:eoeandroida

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。能初始化一个新的代码仓库,做一些适当配置;开始或停止跟踪某些文件;暂存或提交某些更新;从远程仓库拉数据下来或者推数据上去。

用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要,Git 最为出色的是它的合并跟踪能力。

 

git status

看状态

git add

添加一个文件到git index [file name]  是将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,例如'git add app/model/user.rb'就会增加app/model/user.rb文件到Git的索引中

git log

看你commit的日志

git commit

提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m "story #3, add user model"',提交的时候必须用-m来输入一条提交信息  git push:将本地commit的代码更新到远程版本库中,例如'git push origin'就会将本地的代码更新到名为orgin的远程版本库中

git push origin HEAD:refs/for/master

把当前分支推送到名为origin的远端的master分支上

git reset

还原您更改合并前的

git rm

从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb'

git clone

这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份,例如'git clone git://github.com/someone/some_project.git some_project'命令就是将'git://github.com/someone/some_project.git'这个URL地址的远程版本库完全克隆到本地some_project目录下面

git init

初始化的版本库(暂且称为working repository)将会生成两类文件:第一类是版本库目录.git目录,它里面存放的是版本的历史记录信息和实际项目文件的拷贝;你可以把这类版本库叫做"工作目录"(working tree);工作目录是一个包含有版本历史目录".git"和项目源文件的目录;你可以在工作目录中修改你的项目源文件并使用命令"git add"和"git commit"进行版本管理;

git remote

查看与添加远程仓库

git checkout

Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚。


注意:

1、使用命令"git clone"从一个现有的版本库克隆出来的新版本库也是一个工作目录(working tree),包含.git目录和实际项目源文件;

2、如果使用命令"git init"初始化版本库,则远程版本库目录下也包含工作目录(working tree),当本地版本库向远程版本库push时,如果远程版本库当前成处于要被push的分支上,那么push后的结果不会反映在远程版本库的工作目录(working tree)上,也即:在远程版本库的目录下对应的文件还是之前的旧内容,必须使用命令"git reset --hard"之后才能看到push后的新内容,或者是登陆到远程版本库目录下,使用命令"git config --bool core.bare true"把版本库的核心属性修改成bare的类型;


Git与Repo的比较

Git操作一般对应一个仓库,而Repo操作一般对应一个项目,即一个项目会由若干仓库组成。

例如,在操作整个Recket项目时使用Repo,而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。