【问题标题】:How can I pull all remote changes with rebase instead of merge?如何使用 rebase 而不是合并来拉取所有远程更改?
【发布时间】:2011-03-14 23:54:37
【问题描述】:

我可以使用git pull 拉取更改,但它会合并我的本地提交。是否有 git rebase 等效项,我可以使用它进行远程更改?

【问题讨论】:

标签: git version-control rebase pull


【解决方案1】:

是的,你可以git pull --rebase

您还可以将其设置为使用git config branch.autosetuprebase always 跟踪分支时的默认拉取行为。如果您想对您正在跟踪的特定类型的分支执行此操作,请将“always”替换为“remote”或“local”。

现在你所要做的就是git pull

如果您出于某种原因想要进行合并,可以使用git pull --no-rebase

希望这会有所帮助。

更新:请参阅下面的 cmets,了解如何在现有分支上执行此操作。

【讨论】:

  • branch.autosetuprebase 仅更改具有要跟踪上游的 new 分支的默认拉取“模式”。 branch.<name>.rebase 是控制单个分支操作的变量(如果在创建分支时branch.autosetuprebase 为真,则为新的“跟踪”分支设置为真)。使用git config branch.<name>.rebase true为单个分支手动设置。
  • 正确。我忘了提及现有的跟踪分支。如果您知道自己在做什么,也可以手动编辑配置。
  • 要编辑配置文件,找到分支部分并添加:rebase = true
  • 还添加一个 --global 标志以将其应用于全局 git config 而不仅仅是存储库:git config --global branch.autosetuprebase always
  • 你也可以在 .gitconfig 的 [pull] 部分设置“rebase = True”。
【解决方案2】:

除了autosetuprebase,您可以使用pull.rebase 配置选项来更改每个 git pull 的行为(而不仅仅是新创建的分支):

[pull]
    rebase = true

不同之处在于这将适用于非跟踪分支以及您在启用autosetuprebase 之前设置的任何分支。因此,如果您真的希望 pull --rebase 始终是默认设置,pull.rebase 是您的最佳选择!

【讨论】:

  • @Bohdan true...我很久以前就放弃了 TortoiseGit 的日常使用,如果你想用 git 做任何棘手的事情,你最终还是不得不去命令行。
  • 谢谢,这是个好主意!
【解决方案3】:

我通常使用 fetch/rebase 组合,因此我当前的(本地)工作保持在顶部:

git fetch
git rebase origin/develop

【讨论】:

    【解决方案4】:

    将默认行为从 merge 更改为 rebase 在 git >= 1.7.9 中:

    git config --global pull.rebase true

    如果你只想申请当前回购,请删除全局

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2014-06-05
      相关资源
      最近更新 更多