Git入门
1、下载
下载地址:http://git-scm.com/downloads
从这里可以下载到多种操作系统的支持版本,目前有:Mac、Windows、Linux、Solaris。
2、安装
在Linux 上安装:
如果你想在 Linux 上用二进制安装程序来安装 Git,可以使用发行版包含的基础软件包管理工具来安装。 如果以 Fedora 上为例,你可以使用 yum:
$ yum install git
在Windows上安装:
Windows版本是一个exe文件,与其它软件的安装方式是一样的。
3、初次使用Git前的配置
1)配置用户、邮箱:
$ git config --global user.name "fjn"$ git config --global user.email fs1194361820.com
如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。
2)关联文本编辑器:
$ git config --global core.editor emacs
下面是windows系统上关联EditPlus的方法:
$ git config --global core.editor “\”D:\Program Files\EditPlus\x86\EditPlus.exe\””
4、查看help
$ git help$ git --help$ man git-
也可以直接通过浏览器进行查看,因为Git相关问题就在Git安装目录下:
5、将现在项目纳入Git管理
如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:
$ git init
使用这个命令会初始化一个Git仓库,但你项目中的文件并没有加入到仓库中,所以需要做的就是将项目中的文件加入到仓库中,方法如下:
$ git add *.c$ git add LICENSE或者可以直接使用:$ git add *
最终使用:
$ git commit -m 'initial project version'
或许你用习惯了SVN等,add命令入SVN中的加入是类似的,但又是不同的,最后需要提交。-m 后是commit comment。
6、从远程仓库clone项目
如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。 如果你对其它的 VCS 系统(比如说Subversion)很熟悉,请留心一下你所使用的命令是"clone"而不是"checkout"。
$ git clone https://github.com/libgit2/libgit2
如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:
$ git clone https://github.com/libgit2/libgit2 mylibgit
7、Git管理下的文件的状态变化周期
请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:
使用 git status 可以查看文件的状态,例如:
8、常用命令
1)将文件纳入跟踪: git add filename
2)将文件移除跟踪: git rm filename
3)要在 Git 中对文件改名,可以这么做:git mv,例如:
$ git mv README.md README
4)git log 查看提交日志
5)恢复指定文件:git checkout
最后将文件提交就行了,使用git commit。
如果想要直接提交文件,而不使用git add,可以:git commit –a –m ‘ commit message’。如果在提交时不指定comment,就会启动你指定的默认的文件编辑器,让你输入comments。
题外话:
编辑文件:直接在git bash中使用vim file,例如:
效果:
如果想在windows系统下也能够使用vim工具,可以使用gvim。
而在windows上可以使用这些命令的缘由是在git/bin目录下,有大量的相关的exe存在:
9、使用远程仓库
在前面第6小节中,已经说明了如何从远程仓库clone一个已存在的项目。这里就再说一些远程操作相关的其他内容:
1) 关联远程仓库
将远程仓库关联,就可以在本地仓库与远程仓库之前进行文件推送与拉取了。
git remote add name url
$ git remote add shortName https://github.com/userid/reposName
2)从远程仓库pull、fetch:
使用git pull,会将远程仓库中的指定分支到本地仓库的一个分支中,并将两者合并。
使用git fetch,会从远程仓库中抓取你没有的数据,但不会合并,必须手动合并。
3)push推送到远程仓库
使用git push reposName branchName,将仓库reposName中的branchName推送文件到远程仓库。
例如,要将本地修改好的代码同步到远程仓库中。就需要如下操作:
a)使用{git add filename}, {git add --update filename}将添加(或者修改) 的文件在本地仓库上建立索引。
b)使用{git commit -m your_commit_message} 将对代码的修改提交到本地仓库上。
c)使用{git push remoteReposName branchName} 将本地仓库上的代码推送到远程仓库。
例如下面就是将本地仓库的代码同步到远程仓库上,只不过这个远程仓库是在GitHub上的.
4)远程仓库重命名:
git remote rename oldName newName
其实是远程仓库在Git程序中的一个配置,并不会真正的改变远程仓库的名称,只是为了让你在使用时能够进行区分。
5)远程仓库移除:
git remote rm name
同样并不会真正的删除远程仓库,而是你在使用git时,不能再对远程仓库进行操作了。
6)切换到远程分支:
git checkout -b {localBranchName} {origin}/{remoteBranchName}
代表切换到远程分支 origin/remoteBranchName, 并在本地创建分支 localBranchName
例如:
我先clone kafka trunk :
git clone https://github.com/apache/kafka.git .
然后查看当前分支: git status
最后切到0.10.0分支:git checkout -b 0.10.0 origin/0.10.0