git非常规操作记录

116 阅读2分钟

命令整理

git stash

工作区暂存

使用场景:在dev1分支开发正酣时,突然被告知提测的另一个需求有bug,需要切到dev2分支进行修改,怎么办?dev1分支的代码没写完,不能提交,好气。别慌,git stash可以将工作区进行暂存,等到dev2的代码改完,再回到dev1时,可以通过git stash pop取出暂存区的内容,默认是取出栈顶内容

git stash //把本地改动缓存
git stash save "message" // 暂存时增加备注
git stash pop // 取出暂存,默认栈顶,并删除暂存记录
git stash apply // 应用某个暂存,但是不删除暂存记录,默认栈顶,可添加参数stash@{$num}指定第几项
git stash list // 查看暂存列表
git stash clear // 删除暂存列表

git cherry-pick <commit-id>

获取指定提交进行合并

使用场景:开发分支有多个提交,但是主干并不需要合并所有的提交,只需要其中某几个提交,通过git log --oneline查到开发分支中所有的提交记录,再通过git cherry-pick <commit-id>合并一次提交,遇到冲突可通过git addgit cherry-pick --continue继续。

cherry-pick成功示例

git revert <commit-id>

通过新增一条提交记录回滚某次提交,不会修改之前的提交记录

新增了提交记录 如果有冲突,通过git addgit revert --continue继续

git reset <commit-id>

直接回退到指定提交 将本地代码进行回退到指定提交,该提交之后的所有提交均作为未pull的提交(远端有本地无,需要pull)。

建议:个人开发分支可用,合作开发分支勿用。

git diff

比较变更

git diff // 比较工作区与本地缓存区的代码修改
git diff <commit-id1> <commit-id2> // 比较两次提交之间的变更
git diff <branch-name> <branch-name> // 比较两个分支之间的变更
git diff --stat // 获取简单的变更结果

本地开发撤销操作

撤销未commit文件修改&撤销commit的文件

git status // 查看git状态
git checkout <filename> // 撤销未commit文件的修改
git reset --soft HEAD^ // 撤销最近一次的commit
git reset <filename> // 撤销已commit文件的修改

参考文献

我在工作中是如何使用 git 的

git教程