Git 如何将本地分支重设为远程主机

Git 如何将本地分支重设为远程主机,git,clone,git-rebase,Git,Clone,Git Rebase,我从远程存储库的主分支克隆了一个项目remote\u repo。我创建了一个新分支,并将其提交给该分支。其他程序员将remote\u repo推到主分支 我现在需要将我的本地分支RB重设为remote\u repo的master分支 如何做到这一点?向终端键入什么命令?将更改提交到分支机构后,签出主控,并从repo获取其最新更改: git checkout master git pull origin master 然后签出您的分支并在master上重新设置更改的基础: git checkou

我从远程存储库的主分支克隆了一个项目
remote\u repo
。我创建了一个新分支,并将其提交给该分支。其他程序员将
remote\u repo
推到主分支

我现在需要将我的本地分支
RB
重设为
remote\u repo
master
分支


如何做到这一点?向终端键入什么命令?

将更改提交到分支机构后,签出
主控
,并从repo获取其最新更改:

git checkout master
git pull origin master
然后签出您的分支并在
master
上重新设置更改的基础:

git checkout RB
git rebase master
…或一行中的最后两个命令:

git rebase master RB
当试图推回
原点/RB
时,可能会出现错误;如果您是唯一一个处理RB的人,您可以强制推送:

git push --force origin RB
…或者,如果正确配置了git,则如下所示:

git push -f

首先从上游存储库获取新主机,然后在此基础上重新设置工作分支的基础:

git fetch origin            # Updates origin/master
git rebase origin/master    # Rebases current branch onto origin/master

更新:请参阅以获得更简洁的方法来执行相同的操作-最新的Git版本提供了一种更简单的方法来执行上述两个命令的等效操作。

注意:如果您已经对rebase有了广泛的了解,请使用下面的一行代码来实现快速rebase。
git pull --rebase origin master
解决方案: 假设您在您的工作分支上,并且您是唯一一个在该分支上工作的人

git fetch && git rebase origin/master
解决任何冲突、测试代码、提交并将新更改推送到远程分支

                            ~:   For noobs   :~
以下步骤可能会帮助那些不熟悉
git-rebase
并希望轻松完成此操作的人

步骤1:假设此时您的分支没有提交和更改。我们正在参观你们的分公司

git checkout YourBranch
git pull --rebase
发生了什么?提取处理您分支的其他开发人员所做的所有更改,并在其上重新调整您的更改

步骤2:解决出现的任何冲突

第三步:

git checkout master
git pull --rebase
git push --force-with-lease 
发生了什么?从远程主机获取所有最新更改,并在远程主机上重新设置本地主机的基址。我总是保持远程主机清洁和释放准备!而且,更愿意只在本地的主分支上工作。我建议您在git更改或提交之前一直这样做。 注意:如果您不维护本地主机,则不需要执行此步骤,相反,您可以直接在本地分支上执行远程主机的获取和重设基础。正如我在一开始的单步中提到的

步骤4:解决出现的任何冲突

第五步:

git checkout YourBranch
git rebase master
git checkout master
git merge YourBranch
发生了什么事?在主屏幕上重新设置基础

第6步:如果有冲突,解决任何冲突。使用
git-rebase--continue
在添加已解决的冲突后继续重新设置基础。在任何时候,您都可以使用
git-rebase--abort
中止重基

第7步:

git checkout master
git pull --rebase
git push --force-with-lease 
发生了什么事?将更改推送到远程分支机构<代码>--force with lease将确保在重定基址时,是否有其他开发人员对您的分支进行的任何其他传入更改。这是非常有用的,而不是强制推。如果有任何传入的更改,则在推送更改之前获取它们以更新本地YourBranch

为什么我需要推送更改?在适当的重设基础后或在解决任何冲突后,在远程YourBranch中重写提交消息?然后,您需要将您在本地repo中解决的更改推送到分支机构的远程repo

哇哦。。。!您成功地完成了重定基址。

您可能也在考虑这样做:

git checkout YourBranch
git rebase master
git checkout master
git merge YourBranch
何时以及为什么?如果您和其他联合开发人员对分支进行了更改,则将分支合并到主分支中。当您以后想在同一分支上工作时,这会使您的分支与master保持最新

                            ~:   (๑ơ ₃ ơ)♥ rebase   :~

git-fetch-origin-master:master
无需签出即可获取最新版本的master

因此,您所需要的是:


git获取原始主机:主机和git重新基础主机
1.首先更新主机…

git签出[主分支]
git pull[主分支]
2.现在使用主分支重新设置源分支的基础

git签出[源分支]
git rebase[主分支]
git pull[源分支](远程/源分支)
git推送[源分支]
如果远程服务器上还不存在源分支,则执行以下操作:

git checkout master
git pull --rebase
git push --force-with-lease 
git推送-u源[源分支]
“瞧……”步骤1:

git fetch origin
步骤2:

git rebase origin/master
步骤3:(如果有任何冲突,请修复)

步骤4:

git rebase --continue
步骤5:

git push --force

这是唯一的答案,实际上做了什么asked@kayaker243不,这与保罗·德雷珀的回答相同,但我认为形式很长。@erik注意到,保罗·德雷珀在kayaker243发表评论大约半年后(以及在这个回答差不多两年后)写下了他的回答。我得到以下信息:
你的分支和“origin/b1”出现了分歧,#和分别有3个和2个不同的提交。
似乎需要另一个
git pull
。这是正确的还是我在这里遗漏了什么?@RGC否,
git-rebase-master
不会执行与第二个命令(
git-rebase-origin/master
)相同的任务,因为
master
origin/master
可能指向不同的提交(特别是考虑到第一个命令是
git fetch origin
,它可能会修改
origin/master
)(相当于Frerich的答案)这与Frerich的答案不是略有不同吗,因为这会将更改从origin master提交到本地master,而Frerich的答案使本地master保持不变?(pull vs.fetch)不,在Frerich的回答中,rebase修改了本地主控。pull--rebase与fetch后跟rebas是一样的