Git使用教程(上)

本文章为作者学习《pro git》时做的学习笔记,用以个人使用参考。

git的安装

在linux上只需一行命令

1
sudo apt-get install git

安装git后的配置

安装完git后应该设置用户名称和邮件地址

1
2
git config --global user.name "John Smith"
git config --global user.email JohnSmith@example.com

可以使用list命令来列出git配置文件中的所有配置

1
2
> git config --list
>

也可以通过git config <key>来检查某项具体配置

Git基础

获取Git仓库

在现有目录中初始化仓库

1
2

git init

克隆已有的仓库

1
2
3
git clone [url]

git clone [url] branchname #可以自定义分支名

检查当前文件状态

使用git status命令
可使用git status -s命令查看简览

提交文件

忽略文件

如果我们希望有些文件不被git跟踪,我们可以创建一个.gitignore文件来告诉git将某些特定文件或文件类型忽略。以下为.gitignore文件的文件规范:

  • 所有空行或以#开头的行都会被Git忽略
  • 可以使用标准的glob模式(指shell使用的简化的正则表达式)匹配
  • 匹配模式可以以/开头方式递归
  • 匹配模式可以以/结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号!取反

例子:

1
2
3
4
5
6
7
8
9
10
11
12
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

注意,该操作十分有用,如在使用Hexo时,在该文件中添加一些临时文件的目录如public文件夹,可以提高git提交速度
GitHub有一个针对多种语言的.gitignore文件列表,可以在这里找到

跟踪新文件及暂存新文件

这两项操作都可以使用git add命令完成,跟踪新文件是将新生成的文件纳入跟踪范围,暂存新文件是将文件的修改暂存

查看已暂存和未暂存的修改

  1. git diff查看未暂存的部分即工作目录当前文件与暂存区域快照之间的差异,及修改后未暂存的变化。
  2. git diff --cachedgit diff --staged命令可以查看已暂存的将要添加到下次提交里的内容。

提交更新

使用git commit命令提交更新,在commit命令之后加上-m选项可以将提交信息和命令放在同一行,加上-am可以跳过暂存直接提交,加上-v选项可以将git status中输出的信息加入提交信息当中。

移除或移动文件

手工删除文件后,必须使用git rm命令将其从追踪列表中删除,如果该文件在删除前被修改过且加入暂存,则必须使用-f参数强制删除。

在git中,若要修改文件名或移动文件需使用git mv命令,让git意识到改名或移动操作。

注意,以上两个操作都可以直接使用,即不需要先使用rmmv命令,git命令有同样效果。

查看提交历史

查看提交历史使用git log命令,使用-p选项可以显示每次提交的详细变化,-2或其他数字参数可以显示最近的n次提交,--stat可以显示每次提交的简略统计信息,包括提交信息和简略的变化内容。

详细参数见官方文档。

撤销操作

撤销提交

可以使用git commit --amend命令来重新提交,注意使用-m参数加入提交信息,该操作会直接覆盖上一次提交的信息,也可使用-am参数,但是注意这些参数要放在--amend之后。

撤销暂存

可以使用git reset HEAD [filename]来撤销暂存命令即git add命令。

撤销对文件的修改

可以使用git checkout -- [file]来撤销对文件的修改,并将其还原未上次提交的状态(或其他时间)。

注意,该命令十分危险,它将会永久撤销你对某个文件的修改。

远程仓库的使用

查看远程仓库

使用git remote命令来查看远程仓库,使用-v选项可以显示远程仓库的简写和URL,例如:

1
2
3
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)

添加远程仓库

使用git remote add <shortname> <url>来添加一个新的远程仓库,并指定简写,<shortname>即为指定的简写,例如

1
2
3
4
5
6
7
8
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)

从远程仓库中抓取和拉取及推送

从远程仓库中抓取数据使用:

1
$ git fetch [remote-name]

推送到远程仓库:

1
git push [remote-name] [branchname]

查看远程仓库

要查看一个远程仓库的信息可以使用以下命令:

1
git remote show [remote-name]  #remote-name默认为origin

远程仓库的移除和重命名

运行git remote rename可以改变一个远程仓库简写名,例如

1
2
git remote [origin-name] [new-name]
git remote pb paul

运行git remote rm可以移除一个远程仓库

标签

创建标签

Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。
一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。然而,附注标签是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 通常建议创建附注标签,这样你可以拥有以上所有信息;但是如果你只是想用一个临时的标签,或者因为某些原因不想要保存那些信息,轻量标签也是可用的。

附注标签

在运行tag命令时指定-a选项即可,例如

1
git tag -a v1.4 -m "my version 1.4"

可以使用-m指定一条存储标签中的信息。

轻量标签

创建轻量标签不需要使用-a-m等选项,只需要提供标签名字即可,例如:

1
$ git tag v1.4-lw

查看标签信息

使用git show命令查看标签信息。

共享标签

使用git push origin [tagsname]将标签推送到远程仓库,git push命令并不会传送标签。
要一次性传送很多标签可以使用git push --tags

Git别名

为某些命令设置简短的别名,示例:

1
2
3
4
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status