Git

Posted by Solace Blog on January 7, 2021

git中指针的含义

所有分支git都是新增指针来实现,比如新增dev分支,则相应增加一个dev的指针。

git另外还有个指针HEAD,来表示当前分支,比如当前是dev分支,HEAD就会指向dev。

git撤销修改

场景一:add 某文件到了工作区,需要丢弃修改

git checkout -- file

场景二:add并commit文件到了暂存区,需要丢弃修改
  • 第一步:撤销暂存区的修改

    git reset HEAD file

  • 第二步:丢弃工作区的修改

    git checkout -- file

场景三:回退某次提交(前提未推送到远程分支)
  • 第一步:撤销暂存区的修改

    git reset -- hard commit_id

  • 第二步:丢弃工作区的修改

    git checkout -- file

  • 第二步:丢弃工作区的修改

    git checkout -- file

git分支相关

新建并切换到新分支:
  • git branch -b branch_name
  • git switch -c branch_name
当前在dev做新功能,需要给master修复个bug
  • 第一步:保存目前dev的现场

    git stash

  • 第二步:切换到master分支,新建bug_fix分支

    git checkout master

    git switch -c fix_bug

  • 第三步:修改完后,切换到master分支,将bug_fix分支merge到master

    git checkout master

    git merge bug_fix

  • 第四步:切回dev分支,将stash恢复

    git checkout dev

    git stash pop

上面的步骤完成后,dev其实没有master修复bug的代码,需要将此bug的提交merge到dev,git提供了一个cherry-pick命令

git cherry-pick commit_id