Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用分支的git重新基址_Git_Rebase - Fatal编程技术网

不使用分支的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问题(例如,和)。