开发流程
git clone xxx
git fetch
git checkout {迭代分支}
git checkout -b {开发分支} {迭代分支}
git add xxx
git commit -m 'xxx'
git fetch origin {迭代分支}:temp
git log temp
git merge temp
git push -u origin {开发分支}
git branch -d {开发分支} 删除开发分支(-D强行删除)
撤销操作
git ckeckout -- {file} 撤销file的工作区修改
git checkout . 撤销工作区所有修改
git ckeckout --staged {file} 撤销file的暂存区修改
git checkout --staged . 撤销暂存区所有修改
PS: 撤销也可使用git restore,git ckeckout -- {file}可以恢复误删的文件
版本回退
git reflog 查看所有commit的id
git reset --hard {commit-id} 回退到某次commit
git reset --hard HEAD^ 回退到上次commit
git reset --hard HEAD~10 回退10次commit
提交历史
git log temp 查看temp分支的提交历史
git log -p 查看提交历史及每次提交的修改
git log --stat 查看提交历史的更新统计数据
git log --pretty=oneline 简略显示提交历史
git log --graph 以ASCII图形显示分支与合并历史
git log -- path 显示path路径的历史提交
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2
修改对比
git diff 对比工作区和暂存区的修改
git diff HEAD 对比工作区与Git仓库的修改
git diff --staged 对比暂存区与Git仓库的修改
暂存工作区修改
git stash 把工作区当前现场“储藏”起来,等以后恢复现场后继续工作
git stash list 查看工作储藏
git stash apply stash@{x} 恢复第x个工作储藏但不删除
git stash drop stash@{x} 删除第x个工作储藏
git stash pop stash@{x} 恢复第x个工作储藏并删除
远程仓库
git remote -v 查看当前库与所有远程库的关联关系
git remote add origin {远程仓库地址} 将本地仓库关联到远程仓库,远程仓库命名为origin
git remote rm origin 删除本地库与远程库origin的关联
分支管理
git branch -r 查看远程分支
git branch -a 查看本地分支与远程分支
git branch --set-upstream-to=origin/{远程分支} {本地分支} 将本地分支与远程库origin的分支关联
git pull origin {本地分支} 从远程库origin拉取/更新某个分支
git checkout -b {本地分支} origin/{远程分支} 从远程库origin的分支创建本地分支
git push origin {本地分支}:{远程分支} 通过本地分支创建一个新的远程分支,并将本地分支推送到远程
其他
git rebase 把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了
git cherry-pick <commit id> 把其他分支的某次commit复制到当前分支