一、概述
先用一幅图,从总体上描述主要git命令的工作流程
- workspace: 本地的工作目录。(记作A)
- index:缓存区域,临时保存本地改动。(记作B)
- local repository: 本地仓库,只想最后一次提交HEAD。(记作C)
- remote repository:远程仓库。(记作D)
二、命令笔记
以下所有的命令的功能说明,都采用上述的标记的A、B、C、D的方式来阐述。
初始化
git init
//创建git clone /path/to/repository
//检出git config --global user.email "you@example.com"
//配置emailgit config --global user.name "Name"
//配置用户名
操作
git add <file>
// 文件添加,A → B-
git add .
// 所有文件添加,A → B git commit -m "代码提交信息"
//文件提交,B → C-
git commit --amend
//与上次commit合并, *B → C git push origin master
//推送至master分支, C → Dgit pull
//更新本地仓库至最新改动, D → A-
git fetch
//抓取远程仓库更新, D → C git log
//查看提交记录git status
//查看修改状态git diff
//查看详细修改内容git show
//显示某次提交的内容
撤销操作
git reset <file>
//某个文件索引会回滚到最后一次提交, C → Bgit reset
//索引会回滚到最后一次提交, C → B-
git reset --hard
// 索引会回滚到最后一次提交, C → B → A git checkout
// 从index复制到workspace, B → Agit checkout -- files
// 文件从index复制到workspace, B → Agit checkout HEAD -- files
// 文件从local repository复制到workspace, C → A
分支相关
git checkout -b branch_name
//创建名叫“branch_name”的分支,并切换过去git checkout master
//切换回主分支git branch -d branch_name
// 删除名叫“branch_name”的分支git push origin branch_name
//推送分支到远端仓库git merge branch_name
// 合并分支branch_name到当前分支(如master)git rebase
//衍合,线性化的自动, D → A
冲突处理
git diff
//对比workspace与indexgit diff HEAD
//对于workspace与最后一次commitgit diff <source_branch> <target_branch>
//对比差异git add <filename>
//修改完冲突,需要add以标记合并成功
其他
gitk
//开灯图形化gitgit config color.ui true
//彩色的 git 输出git config format.pretty oneline
//显示历史记录时,每个提交的信息只显示一行git add -i
//交互式添加文件到暂存区
如果想更深入地了解git用法,可参考:
FEATURED TAGS
android
组件
else
权限
algorithm
web
tool
java
performance
app
debug
process
memory
jvm
linux
binder
ipc
handler
系统启动
AMS
Bitmap
mobile
gradle
wait
多线程
线程状态
并发
线程安全
数据结构
内存泄露
equals
hashcode
Android Studio
https
Effective
exception
动态代理
base64
crash
github
git
ndk
JavaScript
Charles
Android
C
ViewTreeObserver
xposed
JNI
annotations
maven
ANR
GCC
C++
printf
C语言高级专题
native
nm