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