Git

Posted by Solace Blog on January 7, 2021

git中指针的含义

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

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

git撤销修改

git分为工作区、暂存区,本地分支、远程分支。
每次修改文件对应的是工作区,add修改后的文件到暂存区,commit后就提交到了本地分支上,push后推送到远程分支。
场景一:丢弃本地(工作区)的修改

git checkout -- file

场景二:丢弃add到暂存区的修改(使用非常少)
  • 第一步:撤销暂存区的修改

    git reset HEAD file

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

    git checkout -- file

场景三:丢弃add到暂存区并commit到本地分支的修改(未推送到远程分支)

git reset HEAD~1

如果是撤销前3次的commit

git reset HEAD~3

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