第一章 起步
1.1 基本概念
分布式版本控制工具
以快照形式记录
工作目录 - 暂存区 - Git仓库
1.2 初次运行Git前的配置
设置用户名
git config -global user.name "xxx"
设置邮箱
git config -golbal user.email xxx@163.com
检查配置信息
git config --list
查看某一项配置:若用户名
git config user.name
查看命令帮助文档
git help [命令]
第二章 Git基础
本章目标
- 初始化一个仓库(repository)
- 开始或停止跟踪(track)文件
- 暂存(stage)或提交(commit)更改
- 如何配置 Git 来忽略指定的文件和文件模式
- 如何迅速而简单地撤销错误操作
- 如何浏览你的项目的历史版本以及不同提交(commits)间的差异
- 如何向你的远程仓库推送(push)文件
- 如何从你的远程仓库拉取(pull)文件
2.1 初始化仓库
初始化仓库
git init
跟踪某个文件,将文件放到暂存区
git add [filename]
git commit -m '提交描述'
– 克隆现有仓库
git clone [url] [rename]
2.2 记录每次更新到仓库
Git中文件的状态有:Untracked、Unmodified、Modified、Staged
Untracked是指哪些没有被纳入版本控制的文件状态,Unmodified、Modified、Staged是指纳入版本控制中文件的状态;
Unmodified是指未被修改过的文件,当你从远程仓库克隆一个项目到本地时,这些拉下来的文件就是未修改状态;
Modified表示文件被修改了;
Staged表示文件被放入暂存区;
跟踪新文件
git add [filename]
查看当前文件状态
git status [-s] 加-s为紧凑格式
git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
?? 表示新添加的未被跟踪的文件,A表示新添加到暂存区的文件,红色M表示修改未暂存,绿色M表示修改已暂存,同时两个MM表示修改暂存后又被修改了。
忽略文件
有时候某些文件不需要纳入版本控制,可以在项目下新建一个名为’.gitignore’的文件,然后在里面设置需要过滤掉的文件类型
比如过率掉以.html结尾的文件
*.html
查看尚未暂存的文件更新了哪些内容
git diff 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,
也就是修改之后还没有暂存起来的变化内容。
查看已暂存的将要添加到下次提交里的内容
git diff --staged
提交
git commit [file] [-a] [-m 'description']
不加file则提交所有暂存区文件
加-a表示提交所有
-m 指定添加提交信息
移除文件
git rm [filename]
取消对错误添加跟踪的文件的跟踪,工作目录中仍然保留此文件
git rm --cached [filename]
重命名文件
git mv [oldfilename] [newfilename]
2.3 查看提交历史
查看所有提交历史
git log
git log -p 显示所有提交差异
git log -p -2 显示最近2次提交差异
git log --stat 看简略信息
git log --pretty=oneline 一行漂亮显示
git log --pretty=format:"%h - %an, %ar : %s" 以定制要显示的记录格式
关于format参数直接参看官网
git log --pretty=format:"%h %s" --graph 查看时图形化显示分支信息
git log --since=2.weeks 显示限制时间查看
这一块儿参数很多,建议直接查看官网
2.4 撤销操作
撤销提交
git commit -amend
取消暂存文件
git reset HEAD [filename]
撤销修改, 撤销之后就不能恢复, 需要谨慎使用
git checkout -- [filename]
在 Git 中任何 已提交的 东西几乎总是可以恢复的。甚至那些被删除的分支中的提交或使用 --amend 选项
覆盖的提交也可以恢复(阅读数据恢复了解数据恢复)。然而,任何你未提交的东西丢失后很可能再也找不到了。
2.5 远程仓库的使用
列出远程仓库名称和地址:会列出所有远程仓库
git remote -v
添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写
git remote add [shortname] [url]
– 从远程仓库抓取与拉取
git fetch [remote-name]
– 推送到远程仓库
git push [remote-name] [branch-name]
– 查看某一个远程仓库的更多信息
git remote show [remote-name]
– 远程仓库的重命名
git remote rename [remote-oldname] [remote-newname]
– 远程仓库移除
git remote rm [remote-name]
2.6 打标签
添加一个标签用-a, 同时可以给备注信息
git tag -a v1.4 -m 'my version 1.4'
查看标签
git tag
查看标签详细信息
git show v1.4
轻量标签, 不需要添加任何备注信息
git tag v1.4-lw
对过去的提交打标签
git tag -a v1.2 [校验和]
将标签传送到远程仓库
git push origin [tagname]
git push origin --tags 一次push所有标签
删除本地标签
git tag -d <tagname>
如果想在删除本地标签后,删除远程标签,可以在之后执行push操作
git push <remote> :refs/tags/<tagname>
创建新分支检出标签
git checkout -b version2 v2.0.0
2.7 别名
我们可以给git的命令取别名,比如给checkout取个别名 co
git config --global alias.co checkout # 给checkout取别名为co
git config --global alias.unstage 'reset HEAD -- ' # 给取消暂存添加别名为unstage
3 Git分支
3.1 分支简介
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。
创建一个新分支
git branch [branch name]
切换分支
git checkout [branch name]
3.2 分支的新建与合并
创建并移动到那个分支
git checkout -b [branch name]
合并分支
git merge [branch name]
删除分支
git branch -d [branch name]