您的位置:晶晶的博客>速记>整理一些Git不常用但实用的命令

整理一些Git不常用但实用的命令

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

转载请注明本文标题和链接:《整理一些Git不常用但实用的命令
分享到:

相关推荐

哟嚯,本文评论功能关闭啦~