Git是一款免费、开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
学习git可以参见《Git版本控制管理》一书,O'REILLY出版社。
仓库
1、创建仓库$ git init repo_name
2、克隆仓库
$ git clone from [to]将from的仓库克隆到to。from可以是本地仓库或远程仓库,如果没有to参数,创建跟from仓库同名的仓库目录。
3、查看远程仓库
$ git remote
使用`-v`选项可以查看远程仓库的名字以及路径
4、查看远程仓库的信息:
$ git remote show origin
5、添加远程仓库
$ git remote add custom_name repo_url
将远程仓库repo_url以名字custom_name添加到本地仓库之上
6、删除远程仓库
$ git remote rm origin_name
7、拉取远程仓库
$ git fetch origin_name
8、从远程仓库origin_name中拉取数据,但并不合并
$ git pull origin_name
提交
1、添加文件$ git add file_name
将文件file_name纳入git的管理范围并暂存,file_name会自动展开。
2、排除文件
$ git rm file_name
删除对文件fill_name的跟踪,并从工作目录中删除文件,下次commit之后,file_name会从git仓库中删除。
如果该文件已经被暂存,则需要添加参数`-f`表示强制删除。
相当于运行了'rm file_name'和'git add file_name'
仅仅停止文件的跟踪,而不从工作目录删除:
$ git rm --cached file_name
3、取消暂存文件
$ git reset HEAD file_name
取消对 file_name 的暂存
4、撤销对文件的修改
$ git checkout -- file_name
将文件恢复到上次暂存或提交的状态。
5、提交
$ git commit
$ git commit -m "对本次提交的描述"
如果没`-m`参数,则会调用git定义的编辑器编辑对本次提交的描述。
如果使用`-a`参数,则默认先运行`git add .`然后提交。
如果上次提交不完善,可以使用参数`--amend`将本次提交与上次提交合并为一次提交。
回退至上一版本,则用
$ git reset --hard HEAD^
修改
1、查看已暂存和未暂存的修改$ git diff
2、查看暂存中的修改
$ git diff --staged
3、查看修改的状态
$ git status
* 如果git的工作目录没有任何修改则会显示“nothing to commit”
* 有修改,一下三种状态可能会显示多个:
* 如果有文件没有纳入版本管理则会显示"Untracked files"
* 如果有文件修改且没有加入暂存区域,则会显示"Changes not staged for commit"
* 如果有修改加入到暂存区域则会显示"Changes to be committed"
标签
1、显示标签列表$ git tag
显示具体的标签信息:
$ git show tag_name
2、创建不带注释的标签
$ git tag tag_name
3、创建带注释的标签
$ git tag -a tag_name -m "对标签的描述信息"
4、删除标签
$ git tag -d tag_name
5、提交远程标签
$ git push origin_name tag_name
如果标签名已经存在,则会失败。
使用`--tags`可以一次性提交所有标签。
6、查看远程标签
$ git ls-remote --tags
7、拉取远程标签
$ git fetch origin tag tag_name
分支
1、查看分支$ git branch
打印出分支列表。使用参数`-a`可以查看远程和本地的所有分支,使用参数`-r`可以查看远程分支。
2、创建本地分支
$ git branch branch_name
创建本地分支并切换到新的分支:
$ git checkout -b branch_name
3、合并分支
将分支b合并到分支a:
$ git checkout a
$ git merge b
4、删除本地分支
$ git branch -d branch_name
如果branch_name没有被合并,删除会失败,可以采用强制删除:
$ git branch -D branch_name
5、创建远程分支
$ git push branch_name origin_name_origin_branch_name
6、跟新远程分支
$ git push branch_name origin_name_origin_branch_name7、跟踪远程分支
$ git checkout -b local_branch_name origin_name/origin_branch_name
将远程仓库origin_name的分支绑定到本地分支local_branch_name上
8、删除远程分支
$ git push origin_name --delete origin_branch_name
删除远程仓库origin_name的远程分支origin_branch_name
日志
1、查看更新commit
$ git whatchanged
2、查看历史记录
$ git log没有任何参数的情况下,会按提交时间列出所有的更新
输出格式选项:
* `-p` 显示每次提交的详细差异* `--stat` 同上,只是显示每次提交的修改的文件
* `--pretty` 同上,只是可以自定义显示的格式
* `oneline`
* `short`
* `full`
* `fuller`
* `format`
* `%H`
* `%h`
* `%T`
* `%t`
* `%P`
* `%p`
* `%an`
* `%ae`
* `%ad`
* `%ar`
* `%cn`
* `%ce`
* `%cd`
* `%cr`
* `%s`
* `--shortstat`
* `--name-only`
* `--name-status` 显示提交中文件的增删改查状态
* `--abbrev-commit`
* `--relative-date`
* `--graph`
输出长度
* `-n` 显示最近的n条记录
* `--since`, `--after` 仅显示指定时间之后的提交。
* `--until`, `--before` 仅显示指定时间之前的提交。
* `--author` 仅显示指定作者相关的提交。
* `--committer` 仅显示指定提交者相关的提交。
* `--grep` 仅显示含指定关键字的提交
* `-S` 仅显示添加或移除了某个关键字的提交
Markdown
学习git会不知不觉陷入到另外一个知识点,就是Markdown了。Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,使普通文本内容具有一定的格式,具有轻量、简单、通用的特点。生成的文件后缀为.md。