git实用命令合集

git超实用命令汇总

本文持续更新工作中常用的git命令


stash

描述

  • stash 命令能够将还未 commit 的代码存起来,让你的工作目录变得干净
  • 当您想记录工作目录和索引的当前状态,但又想返回一个干净的工作目录时,请使用git stash。该命令将保存本地修改,并恢复工作目录以匹配头部提交。

应用场景

  • 正在develop分支开发新需求时,突然需要紧急处理线上的bug,要立即修复。没法立刻切到master分支拉代码建新分支。此时可以使用git stash命令来暂存当前未commit的代码,然后切master分支操作,修复完线上紧急的bug后,切回develop只需git stash apply命令即可回复相关代码

相关命令

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

reset --soft

描述

  • 回退你已提交的 commit,并将 commit 的修改内容放回到暂存区
  • 一般我们在使用 reset 命令时,git reset --hard会被提及的比较多,它能让 commit 记录强制回溯到某一个节点。而git reset --soft的作用正如其名,–soft(柔软的) 除了回溯节点外,还会保留节点的修改内容。

应用场景

  • 不小心把不该提交的内容 commit 了,这时想改回来,可以用reset --soft
  • 对于 commit 的内容要求职责明确,颗粒度要细,便于后续出现问题排查。本来属于两块不同功能的修改,一起 commit 上去,这种就属于不规范。若出现此类情况可以用reset --soft

相关命令

# 恢复最近一次 commit
git reset --soft HEAD^

# 在reset --soft指定commit号(HashCode)时,会将该 commit 到最近一次 commit 的所有修改内容全部恢复,而不是只针对该 commit
git reset --soft 1a900ac29eba73ce817bf959f82ffcb0bfa38f75
  • 以上说的是还未 push 的commit。对于已经 push 的 commit,也可以使用该命令,不过再次 push 时,由于远程分支和本地分支有差异,需要强制推送git push -f来覆盖被 reset 的 commit。

cherry-pick

描述

将已经提交的 commit,复制出新的 commit 应用到分支里

应用场景

  • 版本的一些优化需求开发到一半,可能其中某一个开发完的需求要临时上,或者某些原因导致待开发的需求卡住了已开发完成的需求上线。这时候就需要把 commit 抽出来,单独处理。
  • 开发分支中的代码记录被污染了,导致开发分支合到线上分支有问题,这时就需要拉一条干净的开发分支,再从旧的开发分支中,把 commit 复制到新分支。

相关命令

git cherry-pick <commitHash>
# 一次转移多个提交:
git cherry-pick commit1 commit2
# 多个连续的commit,也可区间复制:
git cherry-pick commit1^..commit2
# git cherry-pick 命令的常用配置项如下
-x  提交信息的末尾追加一行,方便以后查到这个提交是如何产生的
-s  在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作
--abort  发生代码冲突后,放弃合并,回到操作前的样子
--quit  发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子
--continue  解决代码冲突后,第一步将修改的文件重新加入暂存区( git add . )第二步使用该的命令,让 Cherry pick 过程继续执行

revert

描述

  • 将现有的提交还原,恢复提交的内容,并生成一条还原记录。

应用场景

  • 开发上线的功能有问题,需要马上撤回,分支上最新的提交还有其他同事的代码,不可以用reset,不然还得麻烦其他同事再合一次,可以使用该命令。

相关命令

# revert掉自己提交的commit
git revert <commitHash>
# 因为revert会生成一条新的提交记录,这时会让你编辑提交信息,编辑完后:wq保存退出

# 还有一种类型是合并提交,若合并提交是两条分支的交集节点,而 git 不知道需要撤销
# 的哪一条分支,需要添加参数 -m 指定主线分支,保留主线分支的代码,另一条则被撤销
#-m 后面要跟一个 parent number 标识出"主线",一般使用 1 保留主分支代码
git revert -m 1 <commitHash>

reflog

描述

  • reset --soft的加强版,它记录了所有的 commit 操作记录,便于错误操作后找回记录。

应用场景

  • 自己在其他人分支提交了代码还推到远程分支,然后用reset 过头,把同事的commit 搞没了。此时可以用该命令找回。

相关命令

git reflog
#上面命令获取到错误提交的commitHash,然后进行恢复
git reset --hard <commitHash>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值