git高阶命令

197 阅读3分钟

git高阶命令

多分支切换暂存提交

在我们实际开发过程中,经常会遇到环境切换的问题,比如,application.yaml文件中的

spring.profiles.active: local or spring.profiles.active: dev or spring.profiles.active: prod , 还包括数据库,redis等连接信息也需要修改,于是我们碰到一个棘手的问题,这些配置文件又不能从一个环境提交到另一个环境,而我们又需要切换环境,有问题肯定也有对应的解决方案,这里我们可以使用命令git stash

git stash

使用该命令,暂存我们的所有配置文件以及还不想提交的代码文件,而后切换到其他环境分支中。

等后面再切换回来,在到储藏的提交中重新应用该暂存即可。我这里使用的IDEA的开发工具!

image.png

image.png

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 开始之前。