基础

  1. git commit 提交
  2. git branch newbranch 创建新分支
  3. git branch newbranch HEAD~^2 在HEAD提交记录的上一级的第二个父节点处创建新分支
  4. git checkout -b newbarnch 创建并切换到新分支
  5. git checkout newbranch 切换到新分支
  6. git merge newbranch 合并新分支到当前分支
  7. git rebase c1 合并当前分支到c1(更清晰,更线性)

高级

  1. 在提交记录之间移动,HEAD是对当前分支的符号引用,总是指向当前分支最近一次提交记录,提交则改变了HEAD指向,HEAD指向分支名称
  2. cat.git/HEAD或git symbolic-ref HEAD 查看HEAD指向
  3. git checkout 提交记录,分离HEAD(哈希值不方便,基于SHA-1,共40位),使HEAD指向该提交记录
  4. 操作符(^)
    1. git checkout main^ 切换到main的父节点
    2. git checkout main^^ 切换到main的父节点的父节点
    3. git checkout main^2 多个提交时,将切换到指定数字的提交记录上去,数字表示第几个父提交
  5. 操作符(~)
    1. git checkout main~4 向前切换到main的第四个父节点
    2. git branch -f main HEAD~3 使用-f将分支强制移动到某个位置
    3. git branch -f main C6 将main分支切换到C6的提交记录上
    4. git checkout HEAD^22 链式操作
  6. 撤销变更
    1. git reset 通过把分支记录回退几个提交记录来实现撤销改动,向上移动分支就像没有提交过一样,改写历史
    2. git revert 是提交一次新的记录用来撤销之前的内容,使得最新记录与改动的上一次记录一致

移动提交记录

  1. git cherry-pick c2 c4 将c2 c4提交记录复制到当前分支的当前提交记录之后(c2 c4位哈希值)
  2. git rebase -i HEAD~4 会打开一个对话框显示4条提交记录,改变位置保存后会改变提交记录

杂项

  1. 提交技巧
    1. 在旧提交记录上修改
      1. git rebase -i HEAD~2 交换两次提交记录
      2. git commit --amend 提交修改
      3. git rebase -i HEAD~2 再交换回来
      4. git branch -f main c1 将main提交记录切换到c1上,即最新提交记录
  2. 标签tag
    1. git tag v1 c1 创建指向c1提交记录的标签v1,不加c1则默认指向HEAD位置
    2. git describe <分支名称> 输出结果为:tag名称_与当前提交记录的距离__当前提交记录
    3. git bisect 查找产生bug的提交记录的指令

高级话题

远程

  1. git clone 克隆远程仓库
  2. git fetch 从远程仓库获取数据&更新远程分支指针
  3. git pull 等同于git fetch+git merge
  4. git push 推送到远端
  5. git fetch; git rebase origin/main; git push 拉取最新代码合并到本地解决冲突再推送到远端,使用rebase是将本地工作移动到了最新提交记录下,再推送,服务器上显示一条记录
  6. git fetch; git merge origin/main; git push 拉取最新代码合并到本地解决冲突再推送到远端,使用merge是将最新代码合并到本地分支下,再推送,服务器上显示两条记录
  7. git pull --rebase; git push 为第5、6条的缩写

//

git fakeTeamwork foo 3

学习网址:

Learn Git Branching:https://learngitbranching.js.org

Pro Git(中文版):https://gitee.com/progit/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐