首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以使用git pull --rebase而不是"git stash git pull git stash pop“吗?

我可以使用git pull --rebase而不是"git stash git pull git stash pop“吗?
EN

Stack Overflow用户
提问于 2017-01-03 16:11:50
回答 5查看 8.2K关注 0票数 13

它们之间的区别是什么

代码语言:javascript
运行
复制
git pull --rebase

代码语言:javascript
运行
复制
git stash
git pull
git stash pop
EN

回答 5

Stack Overflow用户

发布于 2017-01-03 16:31:46

我建议您创建一个实验性存储库,并尝试使用这些命令。亲身体验会让学习变得更容易。

您会注意到,命令序列git stash; git pull; git stash pop会将未提交的更改移动到主分支的更新后的头中。(它还将执行正常的合并,因此提交的更改将被合并,而不是重新建立基础,假设默认的gitconfig)

但是,git pull -rebase会将已经提交了的更改移动到主分支的更新头上。如果您尝试使用脏工作树运行此命令,您将看到错误消息:

代码语言:javascript
运行
复制
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
票数 9
EN

Stack Overflow用户

发布于 2017-01-03 17:43:37

对于你在主题中的问题,简单的答案是“不”。

git pull --rebasegit pull的不同之处在于,前者执行fetch + rebase,后者执行fetch + merge,不同之处在于您有一个非默认的git配置,它告诉git pull执行rebase而不是合并。在这种情况下,这两个命令应该是相同的。

这两个命令之间的差异不会以任何方式影响存储和取消存储未提交更改的需要。如果你有一个脏的工作树,它们都需要这个,否则它们就会出错,告诉你是提交还是隐藏你的更改。

票数 4
EN

Stack Overflow用户

发布于 2018-07-17 01:20:38

我知道这是一年前的帖子,但是...

git pull --rebase

~ vs ~

git stash /git pull /git stash pop

git pull --rebase是介于两者之间的一种混合体。它将允许您保留您的提交,并从您的中央存储库中提取最近提交(推送)的文件。有点像时间旅行,伙计..爆炸噪声

但是为了回答这个问题...Git stash保留未提交的更改,然后在提取完成后将它们放回原处。

因此,如果您还没有完全完成某项工作,但需要中央存储库上的最新文件,您可以:

git stash git pull git stash pop

然而,假设你已经完成了一件事,并提交了它--但是你的同事Timmy从来不告诉任何人狗屎,他已经提交了文件并将它们推送到主(中央)代码库,你应该首先获得他的东西,然后将你的提交添加到堆栈中,并推送它们。

如果您已经提交,但没有将您的更改推送到主(中央)存储库,并且必须在中央存储库上获取新文件,因为另一个开发人员已经提交并推送了他们的文件-您将使用:

git pull --rebase

就像你做了一个汉堡包,但是忘了尝试你的朋友想让你尝试的自制奶酪,所以他给你拿来了你的切片,你必须把你最上面的小圆面包去掉才能涂上这个奶酪,然后再把小圆面包放回去。芝士汉堡。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41439024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档