2.1 获取git仓库
git init 初始化仓库
git add *.c 跟踪文件、放入暂存区
git clone [url] 克隆现有仓库
2.2 记录更新状态
git status 检查文件状态
git status -s 紧凑格式输出状态
创建.gitignore文件,选择忽略文件
git diff 查看未暂存修改
git diff --cached/--staged 查看已暂存修改
git commit 提交暂存区
git commit -a 跳过暂存直接提交
git commit -m "提交的信息"
git rm 删除文件
git rm -cached 移出仓库但保留原文件
git mv 移动文件
2.3 查看提交历史
git log 查看提交历史
git log -p 查看提交历史并显示内容差异 [-num --stat修改文件列表 --pretty]
git log
的常用选项
选项 | 说明 |
---|
-p | 按补丁格式显示每个更新之间的差异。 |
--stat | 显示每次更新的文件修改统计信息。 |
--shortstat | 只显示 --stat 中最后的行数修改添加移除统计。 |
--name-only | 仅在提交信息后显示已修改的文件清单。 |
--name-status | 显示新增、修改、删除的文件清单。 |
--abbrev-commit | 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
--relative-date | 使用较短的相对时间显示(比如,“2 weeks ago”)。 |
--graph | 显示 ASCII 图形表示的分支合并历史。 |
--pretty |
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
|
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format 常用的选项
选项 | 说明 |
---|
%H | 提交对象(commit)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(tree)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(parent)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(author)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 --date= 选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(committer)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
限制
git log 输出的选项
选项 | 说明 |
---|
-(n) | 仅显示最近的 n 条提交 |
--since, --after | 仅显示指定时间之后的提交。 |
--until, --before | 仅显示指定时间之前的提交。 |
--author | 仅显示指定作者相关的提交。 |
--committer | 仅显示指定提交者相关的提交。 |
--grep | 仅显示含指定关键字的提交 |
-S | 仅显示添加或移除了某个关键字的提交 |
$ git log --pretty
=
"%h - %s" --author
=gitster --since
=
"2008-10-01"
\
--before="2008-11-01" --no-merges -- t/ 2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件
2.4 撤销
git commit --amend 在提交后有新git add操作时再次提交使用
git reset HEAD 取消暂存
git checkout -- 撤销已经做出的修改(已经修改的文件会丢失)
2.5 远程仓库的使用
git remote -v 查看远程仓库与对应url
git remote add <shortname> <url> 添加远程仓库
git fetch [remote-name] 从远程仓库中拉取信息
git push [remote-name] [branch-name] 推送到远程仓库
git remote show [remote-name] 查看远程仓库详细信息
git remote rename [remote-name] 修改远程仓库简写名
git remote rm [remote-name] 删除远程仓库
2.6 打标签
git tag 列出已有标签
git tag -a v1.4 -m 'my version 1.4' 创建附注标签
git show v1.4 显示附注标签
git tag v1.4 创建轻量标签
git tag -a v1.2 9fceb02(校验和) 补打标签
git push origin [tagname] 共享标签[--tags推送所有标签]
2.7 git别名
git config --global alias.ci commit git ci代替git commit
git config --global alias.unstage 'reset HEAD --'
3.1 分支
git branch test 创建分支
git branch -d test 删除分支
git log --oneline --decorate 查看分支
git checkout test 切换分支
git checkout -b iss53是git branch iss53; git checkout iss53的简写
git merge hotfix 合并分支
git mergetool 图像化的合并冲突工具
3.2 分支管理
git branch 查看分支列表[-v 查看分支最后一次提交 --merged/--no-merged 已合并未合并分支]
3.3 远程分支
git ls-remote (remote) 显式地获得远程引用的完整列表
git remote show (remote) 获得远程分支的更多信息
git checkout -b [sf] origin/serverfix 在本地建立origin/serverfix的分支[并重命名为sf]
git branch -vv 查看设置的所有跟踪分支
git push origin --delete serverfix 删除origin上的serverfix远程分支
3.4 变基
git rebase master 将当前分支变基到master
git rebase --onto master server client 取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然后把它们在 master 分支上重演一遍(即将基于server上修改的client变基到master上,而不管server)
git pull --rebase 为git fetch;git rebase teamone/master