分布式版本控制系统:不必联网,强大的分支管理;
通过跟踪版本库中所有文件(文本文件的改动情况);
- git add file 修改内容放到暂存区(stage)
- git commit -m “des” 暂存区内容提交到当前分支
- git status
- git diff file / git diff HEAD – file 工作区与版本库里最新版本的区别
时光机穿梭
- git log 显示从近到远的提交日志 / git reflog 记录每一次命令日志
- 版本回退:git reset –hard HEAD^|[commit_id],HEAD为指向当前版本的指针,完全回到上一个版本
–hard 撤销commit add 并且删除工作区代码
–mixed 撤销commit add 工作区代码不变
–soft 撤销commit 不撤销add 工作区代码不变
- git reset HEAD file 把暂存区修改撤销掉(unstage,add撤销)
- git checkout – file 撤销工作区修改,一键还原
- git rm file 删除版本库中文件
远程仓库
使用ssh与github远程仓库关联
ssh安全机制,基于密钥的安全验证:
创建一对密钥,公钥放在服务器
- 客户端发送链接请求,将公钥传送给服务器
- 服务器收到密钥,与自身公钥进行比较
- 一致则使用公钥加密“质询”发送给客户端
- 客户端私钥解密,发送给服务器
- 完成登录
- git remote add origin git@github.com:username/repo-name.git 本地库与远程仓库做关联
- git push -u origin master 将本地库所有内容推送到远程库中(-u 关联分支)
- git clone url 准备好远程库,克隆到本地库
分支管理
HEAD指针指向当前分支;
- git checkout -b dev 创建分支(-b 并切换):增加一个dev指针,HEAD指向dev;
- git add . / git commit -m “des”
- git checkout master 切换到master分支;
- git merge dev 将dev分支合并到master上:将master指针改为dev;
- git merge –no-ff dev 合并,不使用fast forward模式,master为新的指针
- git stash 将工作现场存储起来
- git stash list 查看暂存列表
- git stash pop 恢复
- git stash apply stash@{0} 应用
- git cherry-pick
把bug提交的修改“复制”到当前分支,避免重复劳动
多人协同开发:
- git checkout -b dev origin/dev 创建远程origin的dev分支到本地
- git branch –set-upstream-to=origin/
dev 本地与远程origin/ 的链接