基本命令
1.从现有仓库克隆
克隆仓库的命令格式为 git clone [url]
。比如,要克隆Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
$ git clone git://github.com/schacon/grit.git
这会在当前目录下创建一个名为grit的目录
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
唯一的差别就是,现在新建的目录成了 mygrit
,其他的都一样。
2.检查当前文件状态
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
要确定哪些文件当前处于什么状态,可以用 git status
命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:
$ git status
On branch master #当前所在的分支是 master
nothing to commit, working directory clean #这说明你现在的工作目录相当干净,当前目录下没有出现任何处于未跟踪的新文件
3.跟踪新文件,暂存已修改文件
使用命令 git add
开始跟踪一个新文件。所以,要跟踪 demo.php 文件,运行:
$ git add demo.php
在 git add
后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件,也可以使用git add .
跟踪所有文件。
运行了 git add
之后又作了修订的文件,需要重新运行 git add
把最新版本重新暂存起来
4.忽略某些文件
我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。例:
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/*.txt
5.提交更新
$ git commit -m '本次提交说明'
6.移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm
命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
$ git rm demo.php
后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
$ git rm log/\*.log #此命令删除所有 log/ 目录下扩展名为 .log 的文件
$ git rm \*~ #会递归删除当前目录及其子目录中所有 ~ 结尾的文件。
7.查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log
命令查看。
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
最近的更新排在最上面,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。
我们常用 -p
选项展开显示每次提交的内容差异,用 -2
则仅显示最近的两次更新
8.使用图形化工具查阅提交历史
在项目工作目录中输入 gitk
命令
上半个窗口显示的是历次提交的分支祖先图谱,下半个窗口显示当前点选的提交对应的具体差异
9.修改撤消最后一次提交
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend
选项重新提交:
$ git commit --amend
如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend
提交:
$ git commit -m '新建文件'
$ git add forgotten_file.php
$ git commit --amend
上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。
10.取消已经暂存的文件
两个修改过的文件,我们想要分开提交,但不小心用 git add . 全加到了暂存区域。该如何撤消暂存其中的一个文件呢?可以使用 git reset HEAD <file>...
的方式取消暂存。
$ git reset HEAD adds.rb
如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend
提交:
$ git commit -m '新建文件'
$ git add forgotten_file.php
$ git commit --amend
上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。
远程仓库的使用
1.查看当前的远程库
要查看当前配置有哪些远程仓库,可以用 git remote
命令,它会列出每个远程库的简短名字。
也可以加上 -v
选项(译注:此为 --verbose
的简写,取首字母),显示对应的克隆地址:
$ git remote -v
origin git://github.com/schacon/ticgit.git (fetch)
origin git://github.com/schacon/ticgit.git (push)
2.添加远程仓库
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]
:
$ git remote add pb git://github.com/paulboone/ticgit.git
3.从远程仓库抓取数据
可以用下面的命令从远程仓库抓取数据到本地:fetch
命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支.
所以一般我们运行 git pull
,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支
$ git fetch [remote-name]
$ git pull
4.推送数据到远程仓库
可以运行下面的命令:
$ git push
常用顺序
git clone
-> git add
-> git commit -m
-> git pull
-> git push