【发布时间】:2017-02-12 02:36:17
【问题描述】:
假设我没有使用分支(我在本地主分支上工作,原点是远程服务器上的主分支)。想知道命令的作用是什么?我的困惑是有时我看到人们使用此命令成功合并本地更改(与主远程服务器分支上的更改)而不使用分支,但我可能是错的,但我认为 rebase 仅在您处理分支(主)和与其他分支合并?
git rebase -i origin/master
【问题讨论】:
-
您的问题始于一个不正确的断言:使用 Git,您几乎总是使用分支。在这种情况下,您使用的是分支
master。master几乎没有什么特别之处:它只是另一个分支。master似乎特别的主要原因是它是 Git 在您创建新的空存储库时首先创建的分支。这意味着几乎每个存储库都有一个master(因为没有有一个,你必须做额外的工作。 -
git rebase命令不首先获取。git pull便利命令做了两件事:首先,它运行git fetch。然后,一旦获取成功完成,git pull就会运行git merge或git rebase。这里的问题是您必须提前选择要运行的(合并或变基),并且直到您获取后才能确定哪个操作是最好的。对于大多数人来说,大多数时候,rebase 更好;但git pull默认做git merge。因此,我建议完全避免使用git pull:坚持使用git fetch。但是,(续) -
...如果您发现使用
git pull比运行两个命令更方便,请记住git pull --rebase的意思是“先获取,然后再变基”。您还可以设置您的配置,以便git pull默认执行git rebase(但我仍然更喜欢自己单独执行 fetch-then-rebase)。 -
是的,我通常在 fetch 引入新的提交后 rebase。
-
如果您想比较合并与变基,请参阅许多现有 SO 问题中的任何一个(例如,stackoverflow.com/q/804115/1256452 和 stackoverflow.com/q/16666089/1256452)。