本文章为作者学习《pro git》时做的学习笔记,用以个人使用参考。
git的安装
在linux上只需一行命令1
sudo apt-get install git
安装git后的配置
安装完git后应该设置用户名称和邮件地址1
2git config --global user.name "John Smith"
git config --global user.email [email protected]
可以使用list命令来列出git配置文件中的所有配置
1
2 > git config --list
>
也可以通过
git config <key>
来检查某项具体配置
Git基础
获取Git仓库
在现有目录中初始化仓库
1 |
|
克隆已有的仓库
1 | git clone [url] |
检查当前文件状态
使用git status
命令
可使用git status -s
命令查看简览
提交文件
忽略文件
如果我们希望有些文件不被git跟踪,我们可以创建一个.gitignore
文件来告诉git将某些特定文件或文件类型忽略。以下为.gitignore
文件的文件规范:
- 所有空行或以
#
开头的行都会被Git忽略 - 可以使用标准的glob模式(指shell使用的简化的正则表达式)匹配
- 匹配模式可以以
/
开头方式递归 - 匹配模式可以以
/
结尾指定目录 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号
!
取反
例子:
1 | # no .a files |
注意,该操作十分有用,如在使用Hexo时,在该文件中添加一些临时文件的目录如
public
文件夹,可以提高git提交速度
GitHub有一个针对多种语言的.gitignore文件列表,可以在这里找到
跟踪新文件及暂存新文件
这两项操作都可以使用git add
命令完成,跟踪新文件是将新生成的文件纳入跟踪范围,暂存新文件是将文件的修改暂存
查看已暂存和未暂存的修改
git diff
查看未暂存的部分即工作目录当前文件与暂存区域快照之间的差异,及修改后未暂存的变化。git diff --cached
或git diff --staged
命令可以查看已暂存的将要添加到下次提交里的内容。
提交更新
使用git commit
命令提交更新,在commit
命令之后加上-m
选项可以将提交信息和命令放在同一行,加上-am
可以跳过暂存直接提交,加上-v
选项可以将git status
中输出的信息加入提交信息当中。
移除或移动文件
手工删除文件后,必须使用git rm
命令将其从追踪列表中删除,如果该文件在删除前被修改过且加入暂存,则必须使用-f
参数强制删除。
在git中,若要修改文件名或移动文件需使用git mv
命令,让git意识到改名或移动操作。
注意,以上两个操作都可以直接使用,即不需要先使用
rm
或mv
命令,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
2git 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