1、摘取commit提交[从其他位置摘取代码]:git cherry-pick
一般团队开发都会将master分支作为生产发布的分支,也就是说master分支可能只允许往里merge合并代码,而不允许在该分支进行开发,更有甚者master分支提交代码至远程服务器的权限都被限制的死死的。
常常会有这种情况:本来要在dev
分支做开发并commit的,结果一不小心就在master
分支下commit提交了代码,现在这些提交需要移动到dev
分支去,又不能整个master
分支往dev分支里merge合并,git cherry-pick
就是来解决整个问题,该命令可以选择某一个分支中的一个或几个提交commit来进行摘取操作。
# 从其他分支摘取代码 git checkout master # 进入到master分支 git log # 查看提交错分支的commit_id ## git log命令之后 ## 按空格可以查看更多的commit_id ## 按q键可以退出查看模式 ## 可以看到诸如: ## commit 3f324e4c0ebe6f6b238642c5bf40169b130e016c HEAD (HEAD -> master, origin/master) ## 那一串 3f32开头的字符,一般是黄色字样的就是commit_id git checkout dev # 进入到dev分支 ## 在dev分支里将已经提交到master分支的提交摘取到dev分支中,当然一次可以pick一个或多个commit_id git cherry-pick 3f324e4c0ebe6f6b238642c5bf40169b130e016c ## 后续 可以回到master分支 reset掉没有用的提交 那就是 git reset干的活儿了
2、暂存而不提交:git stash
还是团队开发场景吧~某天你整嗨皮的撸代码呢,QA那边报了个bug,但你当前撸的代码业务还没完成,又不想做一个commit提交,但是呢又要立马着手去调试解决这个bug,git stash
暂存就是干这个了,一个git stash
当前工作区立马清净了,当前做的代码改动又不会丢失。
# 将当前的修改暂存 git stash ## 查看暂存列表 git stash list ## 诸如: ## stash@{0}: WIP on dev: c440ec2 .... ## stash@{1}: WIP on dev: a32e24e .... ## 其中stash@{0}之类的就是暂存编号 ## 从0开始递增,0表示最近的暂存 # 应用当前的暂存 git stash apply # 如果有多个暂存则应用最新一个 # 指定要恢复的暂存 git stash apply _stash_id_ # 删除指定的暂存 # git stash apply并没有将暂存从堆栈中删除 git stash drop _stash_id_ # 恢复并删除暂存区,前面apply只是恢复暂存区但并没有删除,还需要手动执行drop git stash pop [_stash_id_] ## pop命令后方可指定暂存ID,规则与apply一致
git关于的介绍储藏的介绍(或本文不太标准的称呼:暂存):https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%EF%BC%88Stashing%EF%BC%89
3、修改最近一次的提交说明:--amend参数
有时候敲命令git commit -m "xxx",中英文输入法切换,不免对commit的说明输入有误或者需修改的情况,最后这个--amend的参数关乎到git的修改历史记录的功能,而git所有涉及历史记录修改的都是比较复杂的,普通码畜开发的时候基本上用不到,就只记忆这一种用法吧~
## 修改最近一次commit说明 # 直接一条命令执行 git commit --amend -m "xxx" # 交互式 git commit --amend ## git的历史修改非常复杂,常用的只需要了解--amend这个参数接口,amend这个单词含义就是修改、改进,记忆的话,amend跟append类似,可以用于辅助记忆
git修改历史的介绍:https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2
哟嚯,本文评论功能关闭啦~