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

时间:2017-01-03 08:11:50

标签: git rebase git-pull git-stash

之间有什么区别
git pull --rebase

git stash
git pull
git stash pop

5 个答案:

答案 0 :(得分:8)

我建议你创建一个实验性的repo并尝试命令。自己尝试使学习更容易。

您会注意到命令序列git stash; git pull; git stash pop会将未提交的更改移动到更新的主分支头。 (它也会进行正常的合并,因此默认的gitconfig会合并,而不是重新定义的更改)

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

Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

答案 1 :(得分:3)

在这个主题中你的问题的简单答案是" no"。

git pull --rebasegit pull之间的区别在于,第一个fetch + rebase,第二个fetch + merge ,除了你有一个非默认的git配置,告诉git pullrebase而不是合并。在这种情况下,两个命令是相同的。

这两个命令之间的区别不会以任何方式影响存储和解除未提交更改的需要。如果你有一个肮脏的工作树或者他们会出错,告诉你提交或存储你的更改,两者都需要这个。

答案 2 :(得分:0)

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

git pull --rebase

〜vs〜

git stash /git pull /git stash pop

git pull --rebase是两者之间的一种混合-如果可以的话。 它将允许您保留提交,并从中央存储库中提取最新提交(推送)的文件。老兄,这有点像时间旅行。爆炸声

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

所以-如果您还没有完成某些工作,但是需要中央存储库中的最新文件,则可以:

git stash git pull git stash pop

但是,假设您已完成并提交了文件-但您的同事Timmy从未告诉任何狗屎,提交了文件并将文件推送到主(中央)存储库,则应首先获取他的东西,然后添加提交进入堆栈,然后将它们压入堆栈。

如果您有提交,但尚未将更改推送到主(中央)存储库,并且必须从中央存储库获取新文件,因为此后另一个开发人员已提交并推送了它们的文件-您可以使用:< / p>

git pull --rebase

就像您制作汉堡包一样,但是忘了尝试您的伙伴想要您尝试的自制奶酪,因此,在这里他与您的切片一同出现,您必须摘下顶部的面包才能应用此奶酪,然后将发回来-繁荣爆炸。芝士汉堡。

答案 3 :(得分:0)

要回答标题中的问题:否,但是您可以使用此命令通过一个命令来实现所需的功能:

git pull --rebase --autostash

更多信息:https://cscheng.info/2017/01/26/git-tip-autostash-with-git-pull-rebase.html

答案 4 :(得分:-2)

git pull:你实际上发出了git fetch + git merge命令,这会在你的提交日志中产生额外的提交和丑陋的合并气泡。

git pull --rebase:为了保持存储库的清洁,您的提交始终位于树的顶部,直到您将它们推送到远程服务器。该命令将在远程树提交之上应用所有尚未推送的提交,允许您的提交成为一行并且没有分支