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