git-note

分布式版本控制系统:不必联网,强大的分支管理;
通过跟踪版本库中所有文件(文本文件的改动情况);

  • 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安全机制,基于密钥的安全验证:
创建一对密钥,公钥放在服务器

  1. 客户端发送链接请求,将公钥传送给服务器
  2. 服务器收到密钥,与自身公钥进行比较
  3. 一致则使用公钥加密“质询”发送给客户端
  4. 客户端私钥解密,发送给服务器
  5. 完成登录
  • 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/的链接

多人协作