当我应该/不应该使用 git pull --rebase

Posted

技术标签:

【中文标题】当我应该/不应该使用 git pull --rebase【英文标题】:When i should/shouldn't use git pull --rebase 【发布时间】:2013-09-06 03:59:08 【问题描述】:

已经检查了这些问题:

When should I use git pull --rebase?

Git commits are duplicated in the same branch after doing a rebase

When will `git pull --rebase` get me in to trouble?

但我不明白的是,有些人说你应该始终 git pull --rebase 并且其他人在拉动时将其设置为默认选项,而其他人则说这会造成问题。

我在 git log 中遇到了重复提交问题,我猜这是因为 --rebasing 在错误的时间我们应该只使用 pull,我知道 git pullgit pull --rebase 之间的区别在于git pull 正在尝试合并本地和远程,而 git pull --rebase 复制提交。

场景:

    当我开始我的工作并且在做任何新的事情之前我需要拉动其他开发人员的变化时,我应该使用git pull --rebase还是只使用git pull?为什么? 当我工作并提交并决定推送但随后 git 要求我先拉取时,我应该使用 git pull --rebase or git pull 吗?为什么? 当我工作并提交时,工作并提交(循环),然后在我工作的中间我需要其他人的更改才能继续我的任务,我应该git pull 还是git pull --rebase?为什么?

谢谢

【问题讨论】:

您似乎不知道合并和变基之间的区别。如果您阅读relevant parts of the git book,您的所有问题都应该得到解答。 【参考方案1】:

git pull 做了两件事 - git fetch 后跟 git merge。如果您使用git pull --rebase,它会改为使用git fetch,后跟git rebase。要回答您的具体问题:

    如果您没有在本地提交任何更改,那也没关系。结果将是相同的。隐含的git merge 将是快进。

    通常在这种情况下你会想要变基;您希望您的更改成为线性历史记录,而不是遥控器发生的事情。

    通常你也会在这里变基。同样,您希望将本地工作添加到远程历史记录之上,而不是向其添加合并提交。

只需不在远程跟踪分支上工作,就可以避免所有这些混乱。

【讨论】:

以上是关于当我应该/不应该使用 git pull --rebase的主要内容,如果未能解决你的问题,请参考以下文章

git pull请求 - 如果不接受旧的PR,是否应该创建新的PR

如果不再使用本地分支,我应该使用 `git pull --rebase origin master` 还是 `git rebase origin/master`?

如何保护文件夹免受服务器上的git pull更改

撤消 git pull --rebase?

Git rebase local vs git pull --rebase origin

git 要commit之前先pull, 这样做法合理吗?