git高阶命令
多分支切换暂存提交
在我们实际开发过程中,经常会遇到环境切换的问题,比如,application.yaml文件中的
spring.profiles.active: local or spring.profiles.active: dev or spring.profiles.active: prod , 还包括数据库,redis等连接信息也需要修改,于是我们碰到一个棘手的问题,这些配置文件又不能从一个环境提交到另一个环境,而我们又需要切换环境,有问题肯定也有对应的解决方案,这里我们可以使用命令git stash
git stash
使用该命令,暂存我们的所有配置文件以及还不想提交的代码文件,而后切换到其他环境分支中。
等后面再切换回来,在到储藏的提交中重新应用该暂存即可。我这里使用的IDEA的开发工具!
cherry pick精细化合并
场景如下: 我们在自己的分支上开发了很多东西,有很多领先于prod或者dev分支的提交,但是目前只能有部分或者及个别提交能够合并,其他的代码不能合并过去,以免造成污染分支,这里我们可以使用cherry pick。
切换到你要 pick 到的分支
git checkout dev
找到你要合并的提交的修订号(commitID), 例如6c2c32a2b1bdb6c6b0043eb0d76dcff210fdead5
cherry-pick 后面是你 pick 代码片段的 commitID,这个具体的获取方式是 checkout 到你之前 commit 的那条分支去查看。
然后执行以下代码即可
git cherry-pick 6c2c32a2b1bdb6c6b0043eb0d76dcff210fdead5
当然在 pick 过程中可能会产生冲突,需要做手动修改
使用完该命令后,你可能会遇到合并冲突,这里使用查看
git status
On branch prod_CherryPickTest
You are currently cherry-picking commit bc4ecdf.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
nothing to commit, working tree clean
从 git status 的输出结果可知,你当前正处于 prod_CherryPickTest 分支进行 cherry - pick 操作,要处理的提交哈希为 bc4ecdf,并且所有冲突都已解决,工作区是干净的。下面为你详细介绍不同提示命令的作用及适用场景:
继续 cherry - pick 操作
如果你已经解决了所有冲突,且希望继续完成这次 cherry - pick 操作,可以使用以下命令:
git cherry - pick --continue
会让 Git 把之前解决冲突后的更改提交,并且继续进行后续的 cherry - pick 操作(如果还有其他提交需要 cherry - pick)。
跳过当前提交
若你觉得当前这个提交没有必要应用到当前分支,或者在解决冲突后发现该提交没有实际价值,可使用以下命令跳过当前提交:
git cherry - pick --skip
使用该命令后,Git 会跳过当前提交,接着处理后续的提交(如果存在)。
取消 cherry - pick 操作
要是你不想再继续 cherry - pick 操作,想要恢复到 cherry - pick 之前的状态,可以使用以下命令:
git cherry-pick --abort
执行此命令后,Git 会取消当前的 cherry - pick 操作,把分支状态恢复到 cherry - pick 开始之前。