一、工作流程
先用一张图,总体上描述主要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 "yangsheng02@baidu.com"
// 配置email -
git config --gloabal user.name "Skywaler_Yang"
//配置用户名
操作
-
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 → D -
git pull
// 更新本地库至最新改动,D → A -
git fetch
// 抓取远程仓库更新,D → C -
git log
// 查看提交记录 -
git status
// 查看修改状态 -
git diff
// 查看详细修改内容 -
git show
// 显示某次提交的内容
撤销
-
git reset <file>
// 某个文件索引会回滚到最后一次提交,C → B -
git reset
// 索引会回滚到最后一次提交,C → B -
git reset --hard
// 索引会回滚到最后一次提交,C → B → A -
git checkout
// 从index复制到workspace,B → A -
git reset --files
// 文件从index复制到workspace,B → A -
git reset 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到当前分支 -
git rebase
// 衍合,D → A
冲突处理
-
git diff
// 对比workspace与index -
git diff HEAD
// 对比workspace与最后一次commit -
git diff <soucrce_branch> <target_branch>
// 对比差异 -
git add <filename>
// 修改完冲突,需要add以标记合并成功
其他
-
gitk
// 打开图形化git -
git config color.ui true
// 彩色的git输出 -
git config format.pretty oneline
// 显示历史记录时,每次提交的信息只显示一行 -
git add -i
// 交互式添加文件到暂存区