您的位置:首页 > 编程语言

Git使用基础教程《一》

2012-07-21 13:38 543 查看
1 初始化git repository

mkdir blog
cd blog
git init

touch readme
cat >> readme

git add readme
git commit -m "initial project version"

2 从现有repository克隆
假设你在github上的账号为woaigithub,有一个repository叫做forum。

git clone git://github.com/woaigithub/forum.git

在本地就会新建一个文件夹forum,如果想自定义这个文件夹名称,使用下面的命令。myform就是新文件夹的名称。

git clone git://github.com/woaigithub/forum.git myforum

3 检查当前文件状态

git status

显示当前处于哪个分支,有哪些文件处于跟踪状态,那些文件处于非跟踪状态。处于跟踪状态就是说该文件已经执行过git add file1.txt命令,已经纳入管理,但是还没有提交,也就是没有执行过git commit -m "file1 commit"命令。

4 跟踪新文件

touch file1
git add file1

git add后面不指定文件,就是跟踪当前目录的文件,也可以指定需要跟踪的文件或目录,如果是目录,就说明要递归跟踪目录下的所有文件。

5 暂存已经修改的文件

文件修改之后,没有放到暂存区,要暂存这次更新,需要运行git add命令,这个命令是个多功能命令,会根据状态不同来执行不同的任务:可以用它开始跟踪新文件,或者把已经跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态。

如果在执行git add之后又对文件进行了修改,需要再次执行git add命令,否则如果这时候提交的话,后面的修改不会被提交。

6 忽略某些文件

在目录下新建.gitignore文件,列出忽略的文件,这些文件不会被纳入管理,以免将来提交一些无用的文件。

文件 .gitignore 的格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

我们再看一个 .gitignore 文件的例子:

# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

7 查看已暂存和未暂存的更新

git status只列出修改的文件,如果想要查看具体修改的内容,可以使用git diff命令。

8 提交更新

在提交更新之前,一定要确认有什么新建或者修改过的文件还没有执行git add命令,可以使用git status看看那些文件还没有被暂存起来,然后再执行git commit提交。
也可以使用-m参数对本次提交进行一些描述。

git commit -m "fix bug 001"

提交之后会显示你提交到那个分支,有多少文件修订过,有多少行修改和删除。
每次提交都是对项目的一次快照,以后可以回到这个状态。

9 跳过使用暂存区域

给git commit 加上-a选项,git会自动把已经跟踪的文件暂存起来一并提交,从而跳过git add步骤。

10 移除文件

要从git移除某个文件,就必须要从已跟踪的文件清单中移除,然后提交。
使用git rm命令完成这项工作,-f是强制选项,-r是递归选项。

有一种情况是,我们想把文件从git仓库中删除,但是希望保留在当前工作目录中。例如一些不小心纳入管理的,要移除跟踪但是不删除文件,可以使用--cached选项。

git rm --cached readme.txt

11 移动文件

git mv file_from file_to

其实相当于下面的三条命令
mv file_from file_to
git rm file_from
git add file_to

12 显示提交历史

git log

最近的排在最上面,每次都有作者,邮件,提交时间,提交说明。

13 撤销操作

13.1修改最后一次提交

git commit --amend

git commit -m "initial commit"
git add forgotten_file
git commit --amend

上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

13.2取消已经暂存的文件

在git status命令的输出中,已经告诉我们应该怎么做。

git reset HEAD file1
执行之后,文件file1又回到了之前已修改未暂存的状态。

13.3取消对文件的修改

在git status命令的输出中,已经告诉我们应该怎么做,在git1.6.1以及更高版本会提示我们,建议升级,以获取最佳的用户体验。

git checkout -- file1

14 远程仓库的使用

14.1查看当前的远程库


要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库:

git remote -v
可以显示仓库对应的地址。

14.2添加远程仓库

git remote add [shortname] [url]

git remote add fixbug001 git://github.com/woaigithub/forum.git

14.3从远程仓库抓取数据

git fetch [remote-name]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息