git常用使用技巧

本文详细介绍了Git常用命令的差异,包括fetch、pull、merge与rebase的区别。此外,讲解了储藏(Stashing)、修改历史提交、撤销操作、本地与远程分支交互、cherry-pick以及打标签等高级技巧。通过实例演示了如何在Git中有效地管理你的代码历史和协同开发。
摘要由CSDN通过智能技术生成

在这里插入图片描述

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

最常用的几个命令的区别

git fetch/git pull/git rebase/git merge

1.git fetch && git pull

  • git fetch:将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
  • git pull:是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支

2.git merge和git rebase区别

假设你在master的C2提交上创建了分支experiment,并完成开发,而此时master有了新的提交C4。怎么将experiment合并到master?

在这里插入图片描述

git merge的情况下

它会把两个分支最新的快照(C3 和 C4)以及二者最新的共同祖先(C2)进行三方合并,合并的结果是产生一个新的提交对象(C5)。

在这里插入图片描述

git rebase的情况下
在experiment分支下,执行

$ git rebase master

回到两个分支最近的共同祖先,根据当前分支(也就是要进行变基的分支 experiment)后续的历次提交对象(这里只有一个 C3),生成一系列更改,然后以基底分支(也就是主干分支 master)最后一个提交对象(C4)为新的出发点,逐个应用之前的更改,最后会生成一个新的合并提交对象(C3’),从而改写 experiment 的提交历史,使它成为 master 分支的直接下游。

在这里插入图片描述

然后再到master分支下执行merge操作,这将会是一次快进合并。
在这里插入图片描述

虽然merge 和 rebase 整合得到的结果没有任何区别,但变基能产生一个更为整洁的提交历史。如果视察一个变基过的分支的历史记录,看起来会更清楚:仿佛所有修改都是在一根线上先后进行的,尽管实际上它们原本是同时并行发生的。

1 . 储藏(Stashing)

现在需要切换分支,但还不想提交正在进行中的工作;那么可以储藏这些变更。为了往堆栈推送一个新的储藏:

$ git stash

现在工作目录下就干净了,可以切换到其他分支
查看当前的储藏

$ git stash list
 stash@{0}: WIP on fixbug: 29b039d i am fixbugtest
 stash@{1}: WIP on fixbugtest: 29b039d i am fixbugtest 
 stash@{2}: WIP on fixbug: 29b039d i am fixbugtest

可以看到,在所有分支上执行的git stash,都存储在这里了,如果在多个分支上都执行了git stash,那应用时就需要注意了。

应用储藏
git stash apply ,应用后(应用刚刚实施的储藏,即stash@{0}),stash的记录仍然在
git stash pop,应用后,最新stash记录弹出

$ git stash apply

如果想要应用更早的储藏,可以指定stash

$  git stash apply stash@{2}

丢掉储藏</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值