不使用分支的git重新基址
假设我没有使用分支(我在本地主分支上工作,源代码是远程服务器上的主分支)。想知道这个命令的功能是什么?我的困惑是,有时我看到有人使用此命令在不使用分支的情况下成功地合并本地更改(主远程服务器分支上的更改),但我可能错了,但我认为只有在处理分支(主分支)并与其他分支合并时,重基才有效不使用分支的git重新基址,git,rebase,Git,Rebase,假设我没有使用分支(我在本地主分支上工作,源代码是远程服务器上的主分支)。想知道这个命令的功能是什么?我的困惑是,有时我看到有人使用此命令在不使用分支的情况下成功地合并本地更改(主远程服务器分支上的更改),但我可能错了,但我认为只有在处理分支(主分支)并与其他分支合并时,重基才有效 git rebase -i origin/master origin/master是一个与master类似的分支。它基本上跟踪远程主机上的任何内容 当您从master运行git fetch时,它将从远程maste
git rebase -i origin/master
origin/master
是一个与master
类似的分支。它基本上跟踪远程主机上的任何内容
当您从master
运行git fetch
时,它将从远程master获取所有提交,并将其放入origin/master
。如果然后运行git rebase-i origin/master
,则会发生以下情况:
- 所有未在
上的提交都将暂时保留origin/master
- 您的主机将使用
origin/master
- 您的提交将在更新的
master
fetch
,然后再手动rebase
,这基本上就是手动执行git pull--rebase
的操作
另外,您还可以在自己的分支上重新设置基址,例如:
git-rebase-HEAD~2
。这将允许您重新订购(或编辑)当前分支上的提交。感谢rethab的出色解释,并投票支持。对于您的评论,“您的提交将在更新的主控台上重播”,您的意思是我在本地分支主控台上的提交将在本地分支主控台上重播吗?我在这里的回答中解释了rebase:您的提交不会在主控台上。在我上面描述的三个步骤之后,你的母版
的状态是:来源/母版
+你在母版上所做的本地承诺。感谢rethab,研究了你所做的另一篇文章,它真的是清晰而精彩的描述!投票赞成。第二步还有一个问题,当我执行git rebase-I origin/master
时,git是否会将最新的更改从远程主机拉到我的本地主机/主机分支,然后根据最新的远程主机更改,将它们应用到我的本地主机上?或者git-rebase-i-origin/master
仅从我的本地origin/master分支获取我的本地master更改的提交(对于最近的更改,不使用pull-remote-master)?谢谢,真的。rebase完全是本地的。您的问题以一个不正确的断言开始:对于Git,您几乎总是使用一个分支。在本例中,您使用的是分支master
。master
几乎没有什么特别之处:它只是另一个分支。master
看起来特别的主要原因是它是Git在创建新的空存储库时首先创建的分支。这意味着几乎每个存储库都有一个master
(因为,要没有master,您必须做额外的工作)。git pull
便利命令做两件事:首先,它运行git fetch
。然后,一旦获取成功完成,git pull
运行git merge
或git rebase
。这里的问题是,您必须提前选择要运行的操作(合并或重定基址),直到您获取之后,您才能确定哪种操作是最好的。对于大多数人来说,在大多数情况下,重设基础更好;但是git pull
默认为执行git merge
。因此,我建议完全避免git-pull
:只需坚持git-fetch
。然而,(继续)。。。如果您发现使用git-pull
比运行两个命令更方便,请记住git-pull--rebase
的意思是“先获取,然后再重新设置”。您还可以设置您的配置,以便git pull
默认执行git rebase
(但我仍然更喜欢自己先执行单独的获取,然后再执行rebase)。是的,我通常在获取后重新基定会带来新的提交。如果您想比较合并与重新基定,请查看任何现有的so问题(例如,和)。