它们之间的区别是什么
git pull --rebase
和
git stash
git pull
git stash pop
发布于 2017-01-03 16:31:46
我建议您创建一个实验性存储库,并尝试使用这些命令。亲身体验会让学习变得更容易。
您会注意到,命令序列git stash; git pull; git stash pop
会将未提交的更改移动到主分支的更新后的头中。(它还将执行正常的合并,因此提交的更改将被合并,而不是重新建立基础,假设默认的gitconfig)
但是,git pull -rebase
会将已经提交了的更改移动到主分支的更新头上。如果您尝试使用脏工作树运行此命令,您将看到错误消息:
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
发布于 2017-01-03 17:43:37
对于你在主题中的问题,简单的答案是“不”。
git pull --rebase
和git pull
的不同之处在于,前者执行fetch
+ rebase
,后者执行fetch
+ merge
,不同之处在于您有一个非默认的git配置,它告诉git pull
执行rebase
而不是合并。在这种情况下,这两个命令应该是相同的。
这两个命令之间的差异不会以任何方式影响存储和取消存储未提交更改的需要。如果你有一个脏的工作树,它们都需要这个,否则它们就会出错,告诉你是提交还是隐藏你的更改。
发布于 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
就像你做了一个汉堡包,但是忘了尝试你的朋友想让你尝试的自制奶酪,所以他给你拿来了你的切片,你必须把你最上面的小圆面包去掉才能涂上这个奶酪,然后再把小圆面包放回去。芝士汉堡。
https://stackoverflow.com/questions/41439024
复制相似问题