git 最常用的几个操作命令

今天下楼陪女朋友散步,边走边读了一篇公众号推送的文章,图文讲解了10个常用的git操作命令,读完以后感觉对这几个命令的理解加深了不少,又愉快的复习了一下git的常识,写个小记再加深一下印象。

1. 合并(merge)
git merge dev // 合并dev分支上的修改

其实,merge分为两种类型:fast-forward 和 no-fast-forward。

在当前分支相比于我们要合并的分支没有额外的提交(commit)时,可以执行 fast-forward 合并。Git 很懒,首先会尝试执行最简单的选项:fast-forward!这类合并不会创建新的提交,而是会将我们正在合并的分支上的提交直接合并到当前分支。

如果你的当前分支相比于你想要合并的分支没有任何提交,那当然很好,但很遗憾现实情况很少如此!如果我们在当前分支上提交我们想要合并的分支不具备的改变,那么 git 将会执行 no-fast-forward 合并。

2. 变基(rebase)
git rebase master // 复制master分支到当前

我们刚看到可通过执行 git merge 将一个分支的修改应用到另一个分支。另一种可将一个分支的修改融入到另一个分支的方式是执行 git rebase。

git rebase 会将当前分支的提交复制到指定的分支之上。事实上,我的理解是,git merge 比 git rebase 多了一个合并的commit记录,执行 rebase 的分支总是含有我们想要保留的最新近的修改!这样我们不会遇到任何合并冲突,而且可以保留一个漂亮的、线性的 Git 历史记录。

另外,交互式变基,简单提一句,因为我感觉我已经炉火纯青了,手动狗头,

git rebase -i head~3 // 修改最近3条提交记录
3. 重置(reset)

当我们不想要之前提交的修改时,就会用到这个命令。也许这是一个 WIP 提交或者可能是引入了 bug 的提交,这时候就要执行 git reset。

git reset 能让我们不再使用当前台面上的文件,让我们可以控制 HEAD 应该指向的位置。

软重置 --soft

软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后加入的修改!

硬重置 --hard

有时候我们并不想保留特定提交引入的修改。不同于软重置,我们应该再也无需访问它们。Git 应该直接将整体状态直接重置到特定提交之前的状态,也就是说会清掉重置部分的提交记录。

4. 还原(revert)

除了reset,另一种撤销修改的方法是执行 git revert。通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交。

git revert 会保留撤销修改的内容,相当于重新提交了一次包含还原修改的部分 。

5. 取回(Fetching)

如果你有一个远程 Git 分支,比如在 GitHub 上的分支,当远程分支上包含当前分支没有的提交时,可以使用取回。比如当合并了另一个分支或你的同事推送了一个快速修复时。

通过在这个远程分支上执行 git fetch,我们就可在本地获取这些修改。这不会以任何方式影响你的本地分支:fetch 只是单纯地下载新的数据而已。

6. 拉取(pull)

尽管 git fetch 可用于获取某个分支的远程信息,但我们也可以执行 git pull。

git pull 实际上是两个命令合成了一个:git fetch 和 git merge。

7. 日志(Reflog)
git reflog // 查看最近的所有动作的日志

每个人都会犯错,但犯错其实没啥!有时候你可能感觉你把 git repo 完全搞坏了,让你想完全删了了事。

这个时候,git reflog 就是后悔药,当我们破坏了git repo 的时候,或许你还有救,因为它保留了所有操作的日志,包括合并、重置、还原,基本上包含你对你的分支所做的任何修改。然后通过重置或者还原,会让你感动地擦干悔恨的泪水。

8. 拣选(cherry-pick)

当你需要从另外一个分支,获取某一次提交,而不是整个分支的内容时,你可以使用cherry-pick。对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。

git cherry-pick 76d12 // 拣选记录为76d12的提交内容到当前分支;
参考链接:

原文参考
常用 Git 命令清单 - 阮一峰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸尘️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值