目录
一、git stash(储存)
使用场景:
1、当前分支修改了很多代码,需要切到别的分支,我们一般是先commit 到本地仓库,然后去做其他事,但如果我们不想提交当前git分支及留下过多的log记录,就可以使用 git stash,使用git stash后会将当前为提交的代码推到git 栈中,当前的工作环境就会跟上一次提交的完全一样,切换分支修改问题提交后返回该分支 执行: git stash apply 将存储代码拉回来
2、保存代码只是为以后自己查阅,不想增加一个脏的提交内容
实际应用:
- 可以通过 git stash save 'test1' 取代git stash 以记录版本
- git stash list 查看所有存储记录
- git stash pop 功能类似于 git stash apply, 但会删除最近一次的 stash 记录
- git stash drop / git stash clear 删除缓存stash
$ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051 Revert "added file_size" stash@{2}: WIP on master: 21d80a5 added number to log $ git stash drop stash@{0} Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)
- git stash branch test 基于 stash 新建分支 新建test 分支, 丢弃储藏
- git stash 会缓存 暂存区(git add)staged 修改 和 本地修改 , 不会缓存 新建文件和 ignored 文件,如果想缓存上面两种类型文件可以执行以下命令
git stash -u 或者 --include-untracked 存储新建文件 git stash -a 或者 -all 存储所有修改
二、git cherry-pick (代码部分提交转移)
使用场景
你只需要部分代码变动(某几个提交)合并到另外一个分支
tips: git log 查看当前分支的所有提交
git show / git show commitHash 查看提交代码详情
基本用法
git cherry-pick <commitHash> 会在当前分支创建一个 新的 hash 提交
git cherry-pick <branchName> 合并分支的最新一次提交
git cherry-pick <HashA> <HashB> 转移多个提交
git cherry-pick <HashA>..<HashB> 转移多个连续提交 (不包含A)
git cherry-pick <HashA>^..<HashB> 转移多个连续提交 (包含A写法)
常用配置项
-n / --no-commit 只更新工作区和暂存区,不产生新提交
代码冲突
1、代码冲突后,解决冲突将代码重新加入暂存区 (git add .) 后让 cherry-pick 继续执行
git cherry-pick --continue
2、冲突后放弃合并,回到操作前
git cherry-pick --abort
3、退出 cherry pick ,不回退合并
git cherry-pick --quit
三、git reset
用于回退代码
git reset --hard commitId 强行回退不记录提价历史,但是不允许提交
git reset --soft commitId 可以通过这种方式 回退代码,后执行git commit -m "代码回退至..."