使用Git的基本步骤

第一步、初次运行Git前的配置

    通常在新的系统上,咱们都须要先配置下本身的 Git 工做环境。配置工做只需一次,之后升级时还会沿用如今的配置。固然,若是须要,你随时能够用相同的命令修改已有的配置。
    Git 提供了一个叫作 git config 的工具,专门用来配置或读取相应的工做环境变量。git

1.用户信息

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

2.文本编辑器

文本编辑器通常默认是vi或vim,能够经过如下命令配置成其余编辑器github

$ git config --global core.editor emacs

3.差别分析工具

$ git config --global merge.tool vimdiff

4.查看配置信息

git config --list

5.获取帮助

三种方法:vim

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

第二步、取得项目的 Git 仓库

1.从当前目录初始化

要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:服务器

$ git init

初始化后,在当前目录下会出现一个名为 .git 的目录,全部 Git 须要的数据和资源都存放在这个目录中。编辑器

2.从现有仓库克隆

克隆仓库的命令格式为 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

 

第三步、记录每次更新到仓库

1.检查当前文件状态

$ git status

2.跟踪新文件

$ git add README

3.暂存已修改文件

如今咱们修改下以前已跟踪过的文件 benchmarks.rb,而后再次运行 status 命令,会看到这样的状态报告:fetch

$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: benchmarks.rb
#

文件 benchmarks.rb 出如今 “Changed but not updated” 这行下面,说明已跟踪文件的内容发生了变化,但尚未放到暂存区。要暂存此次更新,须要运行 git add 命令(这是个多功能命令,根据目标文件的状态不一样,此命令的效果也不一样:能够用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。ui

运行 git add 将 benchmarks.rb 放到暂存区,下次提交时就会一并记录到仓库。url

4.忽略某些文件

建立一个名为 .gitignore 的文件,列出要忽略的文件模式spa

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

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

星号( *)匹配零个或多个任意字符; [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

5.查看已暂存和未暂存的更新

要查看还没有暂存的文件更新了哪些部分,不加参数直接使用:

$ git diff

查看已经暂存起来的文件和上次提交时的快照之间的差别,能够用:

$ git diff --cached

或

$ git diff --staged

6.提交更新

每次准备提交前,先用 git status 看下,是否是都已暂存起来了,而后再运行提交命令 git commit:

$ git commit

这种方式会启动文本编辑器以便输入本次提交的说明。退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。

也可使用 -m 参数后跟提交说明的方式,在一行命令中提交更新:

$ git commit -m "Story 182: Fix benchmarks for speed"

跳过使用暂存区域

尽管使用暂存区域的方式能够精心准备要提交的细节,但有时候这么作略显繁琐。Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把全部已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:

$ git commit -a -m 'added new benchmarks'

7.移除文件

要从 Git 中移除某个文件,就必需要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),而后提交。能够用 git rm 命令完成此项工做,并连带从工做目录中删除指定的文件,这样之后就不会出如今未跟踪文件清单中了。

$ git rm grit.gemspec

若是删除以前修改过而且已经放到暂存区域的话,则必需要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

另一种状况是,咱们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然但愿保留在当前工做目录中。换句话说,仅是从跟踪清单中删除。好比一些大型日志文件或者一堆 .a 编译文件,不当心归入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项便可:

$ git rm --cached readme.txt

8.文件更名

$ git mv file_from file_to

例如:

$ git mv README.txt README
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# 
# renamed: README.txt -> README
#

其实,运行 git mv 就至关于运行了下面三条命令:

$ mv README.txt README
$ git rm README.txt
$ git add README

9.查看提交历史

$ git log

默认不用任何参数的话, git log 会按提交时间列出全部的更新,最近的更新排在最上面。

第四步、撤消操做

1.修改最后一次提交

有时候咱们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操做,可使用 --amend 选项从新提交:

$ git commit --amend

启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。

2.取消已经暂存的文件

例:取消暂存 的benchmarks.rb 文件:

$ git reset HEAD benchmarks.rb

3.取消对文件的修改

若是以为刚才对 benchmarks.rb 的修改彻底没有必要,能够取消修改,回到以前的状态(也就是修改以前的版本):

$ git checkout -- benchmarks.rb

 

第五步、推送到远程仓库

1.查看当前的远程库

$ git remote      //显示远程仓库的名字

$ git remote -v   //显示远程仓库的名字和对应的克隆地址

2.添加远程仓库

要添加一个新的远程仓库,能够指定一个简单的名字,以便未来引用,运行 git remote add [shortname] [url]:

$ git remote add pb git://github.com/paulboone/ticgit.git

3.从远程仓库抓取数据

能够用下面的命令从远程仓库抓取数据到本地:

$ git fetch [remote-name]

4.推送数据到远程仓库

将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name]。若是要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操做会自动使用默认的 master 和 origin 名字),能够运行下面的命令:

$ git push origin master

5.查看远程仓库信息

能够经过命令 git remote show [remote-name] 查看某个远程仓库的详细信息:

$ git remote show origin

6.远程仓库的删除和重命名

能够用 git remote rename 命令修改某个远程仓库的简短名称,好比想把 pb 改为 paul,能够这么运行:

$ git remote rename pb paul

注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支如今成了 paul/master。

碰到远端仓库服务器迁移,或者原来的克隆镜像再也不使用,又或者某个参与者再也不贡献代码,那么须要移除对应的远端仓库,能够运行 git remote rm 命令:

$ git remote rm paul

 

第七步、打标签

1.列显已有的标签

$ git tag

咱们能够用特定的搜索模式列出符合条件的标签。只对 1.4.2 系列的版本感兴趣,能够运行下面的命令:

$ git tag -l 'v1.4.2.*'

2.新建含附注的标签

建立一个含附注类型的标签很是简单,用 -a (译注:取 annotated 的首字母)指定标签名字便可:

$ git tag -a v1.4 -m 'my version 1.4'

而 -m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。若是在此选项后没有给出具体的说明内容,Git 会启动文本编辑软件供你输入。

可使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象:

$ git show v1.4

3.轻量级标签

轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要建立这样的标签,一个 -a, -s 或-m 选项都不用,直接给出标签名字便可:

$ git tag v1.4-lw

4.后期加注标签

你甚至能够在后期对早先的某次提交加注标签,只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)便可:

$ git tag -a v1.2 9fceb02

5.分享标签

默认状况下, git push 并不会把标签传送到远端服务器上,只有经过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 便可:

$ git push origin v1.5

若是要一次推送全部(本地新增的)标签上去,可使用 --tags 选项:

$ git push origin --tags
相关文章
相关标签/搜索